iOS 開發(fā)去除 CocoaPods 警告(Fix Xcode Warning)

前言

在iOS開發(fā)中,通常我們會使用很多第三方代碼(輪子),而一般我們會選擇使用CocoaPods來管理這個庫。然后有些庫作者已經(jīng)停止更新或者更新并沒有那么即使,當SDK升級或者編譯器升級以后,這些遺留代碼會出現(xiàn)很多警告。每次便宜項目看到這個多警告實在是很不爽。

關閉CocoaPods中的警告

在Podfile中加入 inhibit_all_warnings!即可

platform :ios, '9.0'
inhibit_all_warnings!

關閉文檔警告

pod install 后發(fā)現(xiàn)警告少了,但是還是有一些警告。 如下圖

image

因為從 Xcode8.0 開始,引入了文檔注釋的警告 。
解決方法關掉Pods的文檔警告
Pods -> Build Settings -> Documentation Comments -> NO

image

關閉單個庫警告

command + B 編譯一下,文檔警告沒有了,美滋滋。
然后發(fā)現(xiàn)不對,怎么pods中還有警告

image

這個應該算是 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

image

<font color=#FF1493>注意:</font>是小寫w,如果是大寫的W則是顯示所有警告。

同樣可以直接修改 Pods 整個 Project 的 Other Warning Flags 關閉所有第三方庫的警告。

關閉單個文件警告

此方法同樣適用于項目中關閉單個文件的 warning
target -> Build Phases -> Compile Source 找到相關文件,在后面加入-w

關閉整個工程的相關警告

image

不過并不推薦直接關閉文件或者整個項目的 warning ,warning有助于定位問題,能改掉的 warning 還是盡量修改。

關閉局部警告方法

上面有提到使用#pragma clang diagnostic ignored "警告名稱" 來消除警告
#pragma 本質(zhì)上是聲明,我們通常用來注釋。而他的另一個強大功能就是處理編譯器警告
clang diagnostic 就是 #pragma的一個常用命令

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-warning name"
// your code
#pragma clang diagnostic pop

那么我們怎么找到這個 warning name 呢?
選中廣告右擊顯示菜單,選則 Reveal in Log

image

如圖,中括號中的 -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" 不兼容的指針類型

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容