大家好,我是泰戈爾,一個集美貌與智慧於一身的美男子。今晚大萌魚出去團建了,喝了點酒已經沒有意識了。今晚的文章也就只能由我來操刀了。
又是一個暴風大雨的日子,美股的瀑布來得也比往常更猛烈了些。此情此景,我想吟詩一首:“瀑布就像藍天白雲,晴空萬里,突然暴風雨,無處躲避,總是讓人,始料不及。”
在這麼一個暴雨的日子裡,大萌魚跟往常一樣編寫著程式碼,改著bug,一切看似都很棒。就這那時,大萌魚發現了之前標記的一個 TODO
:
//TODO: Temporary plan, refactor later
複製程式碼
然鵝距離上次標記,時間過去了大半年,我們的大萌魚早已把這個重構的事情拋之腦外,焦急的大萌魚撓了撓頭,心想:“這特麼就很尷尬了啊!”。這時候泰戈爾正好私聊過來拼夕夕瀑布的事,於是大萌魚就把剛才困惑告訴了泰戈爾。
一般在我們編寫程式碼時,有時候需要標記什麼地方待做的,什麼地方需要修復的,我們現在可能沒時間修改,那就需要標記一下,以便以後查閱修改。
Xcode也給我們提供了三種實用的簡易標記,即 MARK
、TODO
、FIXME
,現在這些在 Objective-C
或者 Swift
環境下都是可以使用的。需要注意的是 MARK
、TODO
、FIXME
均必須大寫,Xcode將會在程式碼中尋找這樣的註釋,然後以粗體標籤的形式將名稱顯示在導航欄,就如同我們會用 “#pragma mark -”
符號來標記程式碼區間一樣的道理。
MARK
、TODO
、FIXME
用法如下:
//TODO: 標記將來要完成的內容
//MARK: 標記一件事情
//FIXME: 標記以後要修正或完善的內容
複製程式碼
效果如下:
此外還有以下一種標記,Xcode 也是支援的:
// ???: 疑問的地方
/// !!!: 需要注意的地方
複製程式碼
然鵝,只是有上面的粗體標籤標記的話是遠遠不夠的,在沒有⚠️或者❌的提示情況下,開發者很容易就會把之前的標記給忘掉,就跟我們的大萌魚一樣。
那麼怎麼實現新增自定義的標識,並在編譯時,在 warning 或者 error 中顯示出來呢?答案就是在 run script build phases
中新增一段 shell 指令碼:
- 切換到
target-->build phases-->editor-->add run script build phases
- 把下面的程式碼貼上到 shell 框中
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
,會狠狠的刺痛他們的心扉~