Swift中的#pragma mark?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift中的#pragma mark?相关的知识,希望对你有一定的参考价值。

在Objective C中,我可以使用#pragma mark在符号导航器中标记我的代码部分。由于这是一个C预处理器命令,因此在Swift中不可用。在Swift中是否有替代,或者我是否必须使用丑陋的评论?

答案

你可以使用// MARK:


还有人讨论过,无论如何,自由使用类扩展可能是更好的做法。由于扩展可以实现协议,您可以例如将所有表视图委托方法放在扩展中,并将代码分组到比#pragma mark更能语义的级别。

另一答案

在Swift中添加#pragma_mark有三个选项:

1)// MARK: - your text here -

2)// TODO: - your text here -

3)// FIXME: - your text here -

注意:使用-添加分隔符

另一答案

使用

// MARK: SectionName

要么

// MARK: - SectionName

这将在pragma标记之上给出一行,使其更具可读性。

为了方便添加

// MARK: - <#label#>

到你的代码片段。

替代方式 -

以这种方式使用它

private typealias SectionName = ViewController
private extension SectionName  
    // Your methods

这不仅会添加标记(就像编译标记一样),而且还可以很好地隔离代码。

另一答案
//# MARK: - Spinner Class Methods

在冒号和描述之间添加一行以插入分隔线。这有助于进一步组织代码。上面的代码和屏幕截图使用包含一行的MARK注释。

  1. //#MARK: - 文本方法(LINE)
  2. //#MARK:文字方法(NO LINE)

这仅适用于MARK注释。

enter image description here

另一答案

专业程序员必须使用此标记才能获得良好的代码。这对团队合作也很有帮助。

// MARK: example Web Service start here
// TODO: example 1
// FIXME: Please change BASE url before live 

很容易找到这样的方法

另一答案

您可能也对Swift 4.2 / XCode 10编译器指令感兴趣

#warning("Some string to display")

#error("Some error to display")

当你真的不想错过任何东西时,它可能会有用。

enter image description here

另一答案

//MARK:在Xcode 6.3.2中似乎不适合我。但是,这就是我为了让它发挥作用而做的事情:

1)代码:

import Cocoa

class MainWindowController: NSWindowController 

    //MARK: - My cool methods

    func fly() 
    

    func turnInvisible() 

    

2)在加入jump bar时,//MARK似乎没有任何变化:评论。但是,如果我单击跳转栏中最右边的名称,在我的情况下它会显示MainWindowController(with a leading C icon),那么将显示一个弹出窗口,显示// MARK:comment的效果,即标题为“我的酷方法”:

3)我还注意到,如果我单击代码中的一个方法,那么该方法将成为跳转栏中最右边的条目。为了让MainWindowController(with a leading C icon)成为跳转栏中最右边的条目,我必须点击我方法上方的空白区域。

另一答案

Apple在最新版本的Building Cocoa Apps中说

Swift编译器不包含预处理器。相反,它利用编译时属性,构建配置和语言功能来实现相同的功能。因此,预处理程序指令不会在Swift中导入。

#字符似乎仍然是你使用各种构建配置和类似的东西的方式,但看起来他们试图在pragma的静脉中减少对大多数预处理的需求,并将你转发到其他语言功能。也许这是为了帮助Playgrounds和REPL的操作尽可能接近完全编译的代码。

另一答案

添加待办事项:插入带有前缀TODO:的注释。例如:// TODO:[你的待办事项]。

添加错误修复提醒:插入带有前缀FIXME的注释:例如:// FIXME:[您的错误修复提醒]。

添加标题:插入带有前缀MARK:的注释。例如:// MARK:[您的部分标题]。

添加分隔线:要在注释上方添加分隔符,请在注释的注释部分之前添加连字符( - )。例如:// MARK: - [您的内容]。要在注释下添加分隔符,请在注释的注释部分后添加连字符( - )。例如:// MARK:[您的内容] - 。

另一答案

试试这个:

// MARK: Reload TableView

func reloadTableView()

    tableView.reload()

另一答案

对于Swift,请使用

//MARK:-  Your comment goes here
另一答案

对于那些对使用扩展与pragma标记感兴趣的人(如第一条评论中所述),以下是如何从Swift工程师实现它:

import UIKit

class SwiftTableViewController: UITableViewController 

    init(coder aDecoder: NSCoder!) 
        super.init(coder: aDecoder)

    

    override func viewDidLoad() 
        super.viewDidLoad()

    


extension SwiftTableViewController 
    override func numberOfSectionsInTableView(tableView: UITableView?) -> Int 
        return 1
    

    override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int 
        return 5
    

    override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? 
        let cell = tableView?.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell;

        cell.textLabel.text = "Hello World"

        return cell
    


它也不一定是最好的做法,但如果你愿意,这就是你如何做到的。

另一答案

直到Xcode 5,预处理器指令#pragma mark已经存在。

从Xcode 6开始,你必须使用// MARK:

这些预处理器功能允许将一些结构带到源代码编辑器的功能下拉框中。

一些例子 :

// MARK:

- >前面会有一个水平分隔符

// MARK: your text goes here

- >在下拉列表中以粗体显示“你的文字在这里”

// MARK: - your text goes here

- >在下拉列表中以粗体显示“你的文字在这里”,前面是水平分隔符

更新:添加截图'因为有些人似乎仍然有这个问题:

另一答案

在Objective-C中使用Pragma mark - [SOME TEXT HERE]通过线分离将几个功能组合在一起。

在Swift中,您可以使用MARK, TODO OR FIXME实现此目的

一世。 MARK://MARK: viewDidLoad

这将创建一个水平线,其功能分组在viewDidLoad下(如屏幕截图1所示)

Screenshot 1

II。 ALL://TODO: - viewDidLoad

这将在TODO下分组功能: - viewDidLoad类别(如屏幕截图2所示)

Screenshot 2

III。 FIXME://FIXME - viewDidLoad

这将在FIXME下分组功能: - viewDidLoad类别(如屏幕截图3所示)

Screenshot 3

另一答案

在Objective-C代码中,Xcode检测像// MARK: - foo这样的评论,它比#pragma更便携。但这些似乎也没有被提升(但是?)。

编辑:已在Xcode 6 beta 4中修复。

另一答案

Official Documentation

Apple关于Xcode Jump Bar的官方文档:Add code annotations to the jump bar

Jump Bar Screenshots for Sample Code

Sample Code

Behavior in Xcode 10.1 and macOS 10.14.3 (Mojave)

Xcode 10.1 and macOS 10.14.3

Behavior in Xcode 10.0 and macOS 10.13.4 (High Sierra)

Xcode 10.0 and macOS 10.13.4

Behavior in Xcode 9.4.1 and macOS 10.13.

以上是关于Swift中的#pragma mark?的主要内容,如果未能解决你的问题,请参考以下文章

#pragma mark指令

在objective-C中#pragma mark是啥意思

oc-09-#pragma mark指令的使用,用于查找代码

Swift系列二十九 - 从OC到Swift

swift 报错 Call can throw, but it is not marked with 'try' and the error is not handled

Swift 协议扩展中的“关联类型”难以理解