你们好,我是泰戈尔,一个集美貌与智慧于一身的美男子。今晚大萌鱼出去团建了,喝了点酒已经没有意识了。今晚的文章也就只能由我来操刀了。shell
又是一个暴风大雨的日子,美股的瀑布来得也比往常更猛烈了些。此情此景,我想吟诗一首:“瀑布就像蓝天白云,晴空万里,忽然暴风雨,无处躲避,老是让人,始料不及。”swift
在这么一个暴雨的日子里,大萌鱼跟往常同样编写着代码,改着bug,一切看似都很棒。就这那时,大萌鱼发现了以前标记的一个 TODO
:ui
//TODO: Temporary plan, refactor later
复制代码
然鹅距离上次标记,时间过去了大半年,咱们的大萌鱼早已把这个重构的事情抛之脑外,焦急的大萌鱼挠了挠头,心想:“这特么就很尴尬了啊!”。这时候泰戈尔正好私聊过来拼夕夕瀑布的事,因而大萌鱼就把刚才困惑告诉了泰戈尔。spa
通常在咱们编写代码时,有时候须要标记什么地方待作的,什么地方须要修复的,咱们如今可能没时间修改,那就须要标记一下,以便之后查阅修改。3d
Xcode也给咱们提供了三种实用的简易标记,即 MARK
、TODO
、FIXME
,如今这些在 Objective-C
或者 Swift
环境下都是能够使用的。须要注意的是 MARK
、TODO
、FIXME
均必须大写,Xcode将会在代码中寻找这样的注释,而后以粗体标签的形式将名称显示在导航栏,就如同咱们会用 “#pragma mark -”
符号来标记代码区间同样的道理。code
MARK
、TODO
、FIXME
用法以下:cdn
//TODO: 标记未来要完成的内容
//MARK: 标记一件事情
//FIXME: 标记之后要修正或完善的内容
复制代码
效果以下:blog
此外还有如下一种标记,Xcode 也是支持的:ip
// ???: 疑问的地方
/// !!!: 须要注意的地方
复制代码
然鹅,只是有上面的粗体标签标记的话是远远不够的,在没有⚠️或者❌的提示状况下,开发者很容易就会把以前的标记给忘掉,就跟咱们的大萌鱼同样。开发
那么怎么实现添加自定义的标识,并在编译时,在 warning 或者 error 中显示出来呢?答案就是在 run script build phases
中添加一段 shell 脚本:
target-->build phases-->editor-->add run script build phases
TAGS="TODO:|FIXME:|WARNING:"
ERRORTAG="ERROR:"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$|($ERRORTAG).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/"| perl -p -e "s/($ERRORTAG)/ error: \$1/"
复制代码
设置完 shell 脚本后,编译代码,WARNING
、TODO
、FIXME
就会出现相应的⚠️,而 ERROR
就会被当错编译❌来处理。
有些人会问了,费这么老大劲,为何不直接用 #warning
来标记呢?这就仁者见仁,智者见智了。仔细观察下面图中的区别,你就能发现其中的奥妙。
另外在团队协做开发的过程当中,对于有些开发者来讲,⚠️对他们来讲是零容忍的,若是频繁使用 #warning
,会狠狠的刺痛他们的心扉~