前言
在iOS開發(fā)中盏浙,通常我們會使用很多第三方代碼(輪子),而一般我們會選擇使用CocoaPods來管理這個庫。然后有些庫作者已經(jīng)停止更新或者更新并沒有那么即使,當(dāng)SDK升級或者編譯器升級以后废膘,這些遺留代碼會出現(xiàn)很多警告辣往。每次便宜項目看到這個多警告實在是很不爽。
關(guān)閉CocoaPods中的警告
在Podfile中加入 inhibit_all_warnings!
即可
platform :ios, '9.0'
inhibit_all_warnings!
關(guān)閉文檔警告
pod install
后發(fā)現(xiàn)警告少了殖卑,但是還是有一些警告。 如下圖
因為從 Xcode8.0 開始坊萝,引入了文檔注釋的警告 孵稽。
解決方法關(guān)掉Pods的文檔警告
Pods
-> Build Settings
-> Documentation Comments
-> NO
關(guān)閉單個庫警告
command + B
編譯一下,文檔警告沒有了十偶,美滋滋菩鲜。
然后發(fā)現(xiàn)不對,怎么pods中還有警告
這個應(yīng)該算是 Xcode9 的“新特性”吧惦积,從 Xcode9 開始我們定義一個不帶參數(shù)的block
如typedef void(^TestBlock)();
會顯示警告This block declaration is not a prototype
直接點擊Fix typedef void(^TestBlock)(void);
即可
Or
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wstrict-prototypes"
typedef void(^TestBlock)();
#pragma clang diagnostic pop
來忽略警告
對于自己的項目代碼接校,肯定是每個 warning 都 fix 掉,按照官方推薦寫法來 coding 狮崩,然后對于第三方庫來說蛛勉,要改動的地方太多了,這種方法不太合適睦柴。
下面介紹一種一勞永逸的方法诽凌。
Pods
-> target
-> Other Warning Flags
添加 -w
<font color=#FF1493>注意:</font>是小寫w,如果是大寫的W則是顯示所有警告坦敌。
同樣可以直接修改 Pods 整個 Project 的 Other Warning Flags
關(guān)閉所有第三方庫的警告侣诵。
關(guān)閉單個文件警告
此方法同樣適用于項目中關(guān)閉單個文件的 warning
target
-> Build Phases
-> Compile Source
找到相關(guān)文件,在后面加入-w
關(guān)閉整個工程的相關(guān)警告
不過并不推薦直接關(guān)閉文件或者整個項目的 warning 狱窘,warning有助于定位問題杜顺,能改掉的 warning 還是盡量修改。
關(guān)閉局部警告方法
上面有提到使用#pragma clang diagnostic ignored "警告名稱"
來消除警告
#pragma
本質(zhì)上是聲明蘸炸,我們通常用來注釋躬络。而他的另一個強(qiáng)大功能就是處理編譯器警告
clang diagnostic
就是 #pragma
的一個常用命令
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-warning name"
// your code
#pragma clang diagnostic pop
那么我們怎么找到這個 warning name
呢?
選中廣告右擊顯示菜單搭儒,選則 Reveal in Log
如圖洗鸵,中括號中的 -Wstrict-prototypes
就是 warning name
常用的警告名稱
#pragma clang diagnostic ignored "-Wunused-variable"
未使用的變量
#pragma clang diagnostic ignored "-Warc-retain-cycles"
retain cycle
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
方法棄用警告
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
不兼容的指針類型