在Objective C中,我可以使用#pragma mark来标记符号导航器中的代码片段。由于这是一个C预处理器命令,所以在Swift中不可用。在Swift中有替代品吗,或者我必须使用丑陋的评论吗?
当前回答
Xcode官方文档
苹果目前的官方文档部分为可见性注释代码引入了三个注释:TODO:, FIXME:和MARK:。
最新的Xcode版本(v14.2)支持另外两个注释(虽然没有出现在官方文档中):!!:和??
注意:! !:和??:被某些Xcode版本(如v10.0)不支持,原因未知。
示例截图1 - Xcode 14.2 + macOS 13.1 (Ventura)
示例截图2 - Xcode 10.1 + macOS 10.14.3 (Mojave)
其他回答
//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图标)成为跳转栏中最右边的条目,我必须单击方法上面的空白。
有三个选项可以在Swift中添加#pragma_mark:
1) // MARK: -你的文字在这里-
2) // TODO: -你的文本在这里-
3) // FIXME: -你的文本在这里-
注意:用于添加分隔符
Use
// MARK: SectionName
or
// MARK: - SectionName
这将在pragma标记上面加一行,使其更具可读性。
为了方便,只需添加
// MARK: - <#label#>
到您的代码片段。
▽替代方式
这样使用它
private typealias SectionName = ViewController
private extension SectionName {
// Your methods
}
这不仅可以添加标记(就像pragma mark一样),还可以很好地隔离代码。
我认为Extensions是一个更好的方式而不是#pragma mark。
使用扩展前的代码:
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
...
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
...
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
...
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
...
}
}
使用扩展后的代码:
class ViewController: UIViewController {
...
}
extension ViewController: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
...
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
...
}
}
extension ViewController: UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
...
}
}
Xcode官方文档
苹果目前的官方文档部分为可见性注释代码引入了三个注释:TODO:, FIXME:和MARK:。
最新的Xcode版本(v14.2)支持另外两个注释(虽然没有出现在官方文档中):!!:和??
注意:! !:和??:被某些Xcode版本(如v10.0)不支持,原因未知。
示例截图1 - Xcode 14.2 + macOS 13.1 (Ventura)
示例截图2 - Xcode 10.1 + macOS 10.14.3 (Mojave)
推荐文章
- 在Swift中如何调用GCD主线程上的参数方法?
- swift语言中的结构与类
- 我如何在Swift连接字符串?
- 我应该如何从字符串中删除所有的前导空格?- - - - - -斯威夫特
- Swift:理解// MARK
- Swift -转换为绝对值
- Swift编译器错误:“框架模块内的非模块化头”
- 从父iOS访问容器视图控制器
- NSRange从Swift Range?
- 我可以使用范围操作符与if语句在Swift?
- 在Swift中转换字符串为日期
- 点击按钮时如何打开手机设置?
- 在Swift中使用自定义消息抛出错误/异常的最简单方法?
- 编译器错误:带有Objective-C选择器的方法与前面带有相同Objective-C选择器的声明冲突
- 如何在Swift中获得唯一的设备ID ?