Swift的编译标记

Context

在OC 中, 我经常使用 #Param来给控制器划分代码结构 , 比如 ,一个控制器,我经常分为如下的结构:

1
2
3
4
5
6
7
8
9
#pragma mark -life cycle

#pragma mark - <#name#> delegate

#pragma mark -event response

#pragma mark -private methods

#pragma mark -getters and setters

这样的好处是, 每个控制器的结构都是规范的. 如图, 方法都分类了(对于我这样的Vim控 ,还能实现在标签之间的跳转)

代码结构

在协作开发中 , 阅读代码的成本大大降低.

Swift 的编译标记

在Swift 中也有类似的方式, 我们可以使用 // MARK: 这样的标记,并且在后面写上描述, 这样Xcode 将在导航栏的中用标签的形式区分出这些标记.

1
2
3
4
5
6
7
8
9
10
11
12
13
class ViewController: UIViewController {

// MARK: life cycle
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: Warning
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}


}

这样,在Swift中得表现如图:

我们还能在 :的后面加一个 ‘-‘,这样导航中会再多一条横线,隔开各个部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14

class ViewController: UIViewController {

// MARK:- life cycle
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK:- Warning
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}


}

效果如图:

还有 todo 和 fixme ,我们可以用来表示要坐得事情 和需要改正的地方.

1
2
3
4
5
6
7
8
// TODO: this is to do
func todo(){

}
// FIXME: you need fix me
func fixMe(){

}

效果如图:

可以看到, 与 MARK 相比 , TODO 和 FIXME 的本身也被显示出来了, 能更好地表明用意.

一个Warning

在OC 中,我们用的更多的是 #Warning ,来提示自己这里需要更改或者有问题需要修改, 但是 Swift中暂时没有类似的关键字. 算是比较遗憾的.