1. 程式人生 > >iOS開發之Warning淺談

iOS開發之Warning淺談

Warning

對於一個coding有潔癖的人來說,warning在他們眼中和error沒什麼區別,就像是一口痰卡在喉嚨中,吐不出來,咽不下去,甚是難受。

我雖然不是一個“處女座”特性的人,但是在專案上線之前,還是要儘量保證 0 bug,0 error和 0 warning。

waring是編譯器認為,你做了一些可能不是你預想那樣的事情,但是你還沒有意識到。編譯器的職責就是嚴格執行你所告訴它的命令。

很多時候,有些warning是無法避免的,我在開發中遇到的最多的warning就是  unused-variabledeprecated 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/

如果有任何問題歡迎再下面留言,或者掃描二維碼