問題描述:
在我們的項目中,因為大量的使用第三方庫,經常會出現各種三方庫,以及我們自己再敲代碼時候調用系統方法卻沒有實現到時的各種各樣的黃色警告。作為一個有追求的程序員,不僅僅是為了實現功能而實現功能。如何去掉這些煩人的黃色警告呢?
環信easyUI中的黃色警告
軟件環境:
Xcode Version 8.2.1 (8C1002)
如何查看警告的類型
在警告窗口,某個警告上,我們右擊,顯示出右鍵菜單,選擇其中的Reveal in Log
展示
之后就會在右側展示出警告類型
警告類型
注意:如果需要關閉警告需要將 -W 換位-Wno-
1.關閉使用cocopods導入的第三方庫的黃色警告
去掉cocopods中導入三方庫的黃色警告比較簡單,只需要一行代碼 inhibit_all_warnings!
,如鐘使用的是cocopods的客戶端 cocoapods
2.關閉整個工程中某個類型的警告
Xcode為我們提供了方法,只需要簡單的配置即可。
Target --> BuildSetting --> other warnning flag
在其中添加-Wno-shorten-64-to-32
即可以去掉整個工程中的 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32_t' (aka 'int’)
警告
3.關閉指定.m文件中的黃色警告
同樣,Xcode同樣給我們提供了配置方法,關閉指定文件中的某種類型的警告很簡單。
TARGETS -- > Build Phases --->Compile Sources
中雙擊需要關閉警告的.m文件,在其中添加添加關閉指定類型的代碼即可.
關閉指定文件的警告
4.關閉某個文件中的某些警告
使用編譯器提供的宏來操作
pragma clang diagnostic push#pragma clang diagnostic ignored "-相關命令" //需要關閉警告的代碼#pragma clang diagnostic pop
下面給出一些關閉常見警告的示例
1.方法棄用警告#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" [TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]]; #pragma clang diagnostic pop
2.不兼容指針類型#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wincompatible-pointer-types" // #pragma clang diagnostic pop
3.循環引用#pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-retain-cycles" self.completionBlock = ^ { ... }; #pragma clang diagnostic pop
4.未使用變量#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunused-variable" int a; #pragma clang diagnostic pop
最后
上面講到的幾種方法,各位讀者根據不同的應用場景自行選擇使用。其實對于自己寫的代碼最直接同時最安全方式就是,定位到自己報警告的位置,修改為不警告。最后的最后,祝各位讀者:** No Bug,No Warnning!**