iOS開發之Warning淺談
Warning
對於一個coding有潔癖的人來說,warning在他們眼中和error沒什麼區別,就像是一口痰卡在喉嚨中,吐不出來,咽不下去,甚是難受。
我雖然不是一個“處女座”特性的人,但是在專案上線之前,還是要儘量保證 0 bug,0 error和 0 warning。
waring是編譯器認為,你做了一些可能不是你預想那樣的事情,但是你還沒有意識到。編譯器的職責就是嚴格執行你所告訴它的命令。
很多時候,有些warning是無法避免的,我在開發中遇到的最多的warning就是 unused-variable, deprecated method 這類的warning。xcode提供了多種控制warning的方法,對於不同的warning型別,也有對應的開啟和關閉Flag,基本格式如下:
-WsomeWarnig //開啟某個warning
-Wno -someWarnig //關閉某個warnig
例:
-Wunused-variable //開啟未用變數的warning
-Wno-wariable //關閉未用變數的warning
xcode4之前編譯器用的是llvm-gcc,之後的版本用的是llvm-clang,雖然編譯器有些不同,但是clang還是相容了gcc的很多命令,關於warning的Flag可以檢視下面三個連結,兩個來自於官方,但建議看非官方的那個^^:
gcc:http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
clang:http://clang.llvm.org/docs/UsersManual.html
f**k waring:http://fuckingclangwarnings.com
全域性
全域性設定-Weverthing 可以開啟所有的warning,但是一般不建議這麼幹,因為run一下,你懂的。
設定方式如下圖:
設定完之後,就慢慢改吧。
區域性
區域性warning控制,最常見的就是 unused-variable 有時候,你寫了變數,暫時沒有用到,但是你過段時間可能要用,又不想在每次編譯的時候,一直提示warning,這個時候只需要將該變數宣告出加上一個區域性的 #pramga 宣告即可:
#pragma clang diagnostic push
#pragma clang diagnostic ignore "unused-variable"
......
......
#pragma clang diagnostic pop
done,新增後,編譯器在編譯的時候,就會忽略push和pop之間的警告。 #pragma還可以用mark來使程式碼更加整潔。
參考:
http://onevcat.com/2013/05/talk-about-warning/
http://www.bignerdranch.com/blog/a-bit-on-warnings/
如果有任何問題歡迎再下面留言,或者掃描二維碼