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


当前回答

专业程序员必须使用这个标签来获得好的代码。 这对团队合作也有好处。

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

像这样的方法很容易找到

其他回答

Use

// MARK: SectionName

or

// MARK: - SectionName

这将在pragma标记上面加一行,使其更具可读性。

为了方便,只需添加

// MARK: - <#label#>

到您的代码片段。

▽替代方式

这样使用它

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

这不仅可以添加标记(就像pragma mark一样),还可以很好地隔离代码。

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

#warning("Some string to display")

and

#error("Some error to display")

当你真的不想错过什么东西时,它可能会很有用。

//MARK:在Xcode 6.3.2中似乎不工作。然而,这是我所做的让它工作:

1)代码:

import Cocoa

class MainWindowController: NSWindowController {

    //MARK: - My cool methods

    func fly() {
    }

    func turnInvisible() {

    }
}

2)在跳转栏中添加//MARK:注释时没有任何变化。然而,如果我点击跳转栏中最右边的名字,在我的例子中,它说的是MainWindowController(带有一个领先的C图标),然后一个弹出窗口将显示显示//MARK:注释的效果,即一个标题说“my cool methods”:

3)我还注意到,如果我点击我的代码中的一个方法,那么这个方法就会变成跳转栏中最右边的条目。为了让MainWindowController(带有一个C图标)成为跳转栏中最右边的条目,我必须单击方法上面的空白。

在Objective-C代码中,Xcode检测像// MARK: - foo这样的注释,它比#pragma更可移植。但这些似乎也没有被采纳(目前?)

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

在Objective-C中使用Pragma标记- [SOME TEXT HERE]将几个函数通过行分隔分组在一起。

在Swift中,您可以使用MARK, TODO或FIXME来实现这一点

i. MARK: //MARK: viewDidLoad

这将创建一条水平线,函数分组在viewDidLoad下(如截图1所示)

ii. 待办事项: //待办事项: - viewDidLoad

这将把函数分组在TODO: - viewDidLoad类别下(如截图2所示)

iii. FIXME : //FIXME - viewDidLoad

这将把函数分组在FIXME下:- viewDidLoad类别(如截图3所示)

查看apple文档了解详细信息。