怎么去掉Xcode工程中的某种类型的警告
隨著項目的慢慢發展,工程中的警告數量可能越來越多。這些警告有的是我們自己寫出來的,有的來自第三方代碼,下面以一個64位轉32位損失精度的警告為例來說明如何處理警告。
產生警告的代碼片段
long long i64 = 0x0000F000;int i32 = i64;NSLog(@"-------->%d", i32);方法一:通過完善代碼處理警告
?
對于如上的警告類型,程序員需要確定轉換時是否會損失精度,
如果不會損失精度,直接強制類型轉換:
?
long long i64 = 0x0000F000;int i32 = (int)i64;NSLog(@"-------->%d", i32);如果會損失精度,改變變量類型:?
long long i64 = 0x0000F000;long long i32 = i64;NSLog(@"-------->%lld", i32);這種處理警告的方法主要適用于我們自己編寫的代碼,即:我們要知道自己寫的是什么。
方法二:通過編譯指示符忽略警告
?
| 1 2 3 4 5 | #pragma?clang?diagnostic?push #pragma?clang?diagnostic?ignored"-Wdeprecated-declarations" ????//寫在這個中間的代碼,都不會被編譯器提示-Wdeprecated-declarations類型的警告 dispatch_queue_tcurrentQueue?=dispatch_get_current_queue(); #pragma?clang?diagnostic?pop |
long long i64 = 0x0000F000;
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshorten-64-to-32"
int i32 = i64;
#pragma clang diagnostic pop
使用這種方法可以在源文件的某個部分忽略警告。
方法三:通過宏控制忽略編譯警告
定義宏:
#define DiscardLostPrecisionWarning(CodeBlock) /do { /_Pragma("clang diagnostic push") /_Pragma("clang diagnostic ignored /"-Wshorten-64-to-32/"") /CodeBlock; /_Pragma("clang diagnostic pop") /} while (0)使用宏:
int i32 = 0;DiscardLostPrecisionWarning(i32 = i64);方法四:忽略指定文件的編譯警告
在 Build Phases 中為指定文件增加編譯參數:-Wno-shorten-64-to-32,如下圖:
這種方法可以在不修改源碼的情況下忽略文件中某種類型的警告,主要適用于以源碼形式引入的第三方庫。
方法五:忽略指定Target的編譯警告
在 Target –> Build Settings -> Custom Complier Flags -> Other Warning Flags 中增加 -Wno-shorten-64-to-32,如下圖:
這種方法可以在不修改源碼的情況下忽略Target中某種類型的警告。?
方法六:忽略工程的編譯警告
在工程中忽略警告的方法與在 Target 中忽略警告的方法類似,但是可以控制工程中的所有 Target,前提是:Target要繼承 Project 的編譯設置,設置繼承的方法見下圖:
即增加:$(inherited)。?
然后設置工程的Build Settings -> Custom Complier Flags -> Other Warning Flags 中增加 -Wno-shorten-64-to-32,如下圖:?
然后到 Target 中可以看到編譯設置為:?
注意:編譯設置沒有使用加粗字體,說明是繼承來的。??
后記:
對于我們使用cocoapod引入的第三方,我們可以在podfile文件中 增加一句??inhibit_all_warnings! 來要pod的工程不顯示任何警告,例如
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | link_with?'SecondHouseBrokerAPP','SecondHouseBrokerCOM' platform?:ios,'6.0' inhibit_all_warnings! ? ? pod?'CocoaAsyncSocket' pod?'Reachability' pod?'ProtobufObjC' pod?'SDWebImage' pod?'FMDB' pod?'GPUImage' pod?'CXPhotoBrowser' pod?'CocoaLumberjack' |
轉載于:https://www.cnblogs.com/cynthia116/p/4859313.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的怎么去掉Xcode工程中的某种类型的警告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LayoutInflater类详解
- 下一篇: Yii源码阅读笔记 - 日志组件