平時的開發(fā)過程當中虎囚,編譯 之后總會出現(xiàn)各種各樣的警告,對于開發(fā)者而言可以使用些特殊手段強制消除這些警告.
一,如何查看某種警告的類型
打開一個工程,編譯項目(不編譯Reveal in Log
是灰色的)镊辕,切換左側(cè)導航區(qū)域 issue navigator
,右鍵某一個警告蚁袭,點擊Reveal in log
征懈,[]里面的字符串就是該警告的名稱.
有以下常見的警告類型:
"-Wunused-variable" 聲明變量未使用
"-Wincomplete-implementation" 方法定義未實現(xiàn)
"-Wundeclared-selector" 未聲明的選擇器
"-Wformat" 參數(shù)格式不匹配
"-Wdeprecated-declarations" 廢棄掉的方法
"-Wunreachable-code" 不會執(zhí)行的代碼
"-Wincompatible-pointer-types" 不兼容指針類型
"-Warc-retain-cycles" 循環(huán)引用
"-W#warnings" 通過 #warning主動添加的警告
二,如何消除警告
1,自己手動改
最直接的方式,直接找到警告的那段代碼修改掉.這個方式最安全.但是工作量巨大揩悄。卖哎。。
2,關(guān)閉源文件中的警告
針對項目里的某一段產(chǎn)生警告的代碼删性,可以將這段代碼放入以下宏控制當中:
#pragma clang diagnostic push
//"-Wunused-variable"這里就是警告的類型
#pragma clang diagnostic ignored "-Wunused-variable"
int a;
#pragma clang diagnostic pop
在宏控制里的a變量不會產(chǎn)生黃色警告亏娜。
也可以在作用域比較大的頭文件中包含:
#pragma clang diagnostic ignored "警告名稱''
如果剔除了push與pop 則后面所有的代碼都具有強制消除警告作用.
3,忽略工程中警告
1)
在項目的 Build Settings
中也可以設(shè)置忽略某種或多種類型的警告,不過在這設(shè)置的影響范圍就是整個項目的了.
還是上面的例子蹬挺,在 Build Settings
中找到Custom Compiler Flags
维贺,雙擊 Other Warning Flags
(可以配置 Debug 和 Release 環(huán)境),填入 -Wno-unused-variable
.完成后汗侵,編譯項目幸缕,項目中所有的此類型警告都沒有了群发。Build Settings
中項目全局忽略警告這里所填寫的內(nèi)容規(guī)則晰韵,就是在第一種方法中找到的警告標識符中的-W
字母后面加上 -Wno-
就可以了.
2)關(guān)閉某一個指定文件的某種指定類型的警告
關(guān)閉某個指定文件的某種類型的警告,Build Phases
->Compile Sources
,找到指定文件熟妓,雙擊文件雪猪,在其中添加-Wno-protocol
,即使該文件中未實現(xiàn)代理的方法,也不會產(chǎn)生警告.
4,針對cocoapod引入的第三方庫
1)
對于我們使用cocoapod
引入的第三方,我們可以在podfile
文件中 增加一句 inhibit_all_warnings!
來要pod的工程不顯示任何警告起愈。
2)
也可以針對某一個第三方庫只恨,不顯示他的警告译仗,以AFNetworking
為例:
pod 'AFNetworking', '2.6.3', :inhibit_warnings => true