1. 程式人生 > >IOS忽略警告

IOS忽略警告

關於xcode的警告分以下幾種:

1、開發過程中主動加的 #warning 用來給自己或小夥伴的提醒

2、我們寫程式碼過程中,有問題的程式碼或確實是沒問題的程式碼

3、第三方框架的警告,很多的三方庫都會自帶很多編譯器警告,而這些程式碼確實是沒有問題的,如果我們改動三方框架的程式碼,用cocoapods管理三方庫,哪天更新三方庫的話,這些警告又會出現了

我們特意加的警告和開發中我們自己寫的程式碼出現的警告對我們來說是有意義的,而一些確定沒問題程式碼出現的警告往往會對前邊有用的警告造成混淆,所以為了突出這些有用的警告我們必須想辦法忽略一些沒用的警告,這樣程式碼看上去也舒服一些。我們可用的方法有很多:

1、通過Clang命令 2、通過podfile檔案3、通過對工程的build setting 的 other warning flags 4、通過build phases的compile sources 5、通過操作pch等等

下面具體來聊一聊如何用不同的方法忽略警告

1、忽略單個警告:

Clang提供了一個方便的方法來解決這一切,使用#pragma clang diagnostic push/pop,你可以告訴編譯器僅僅為某一特定部分的程式碼(最初的診斷設定在最後的pop被恢復)來忽視特定警告。例如xmpp中的警告:

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-相關命令"

//需要忽略警告的程式碼

#pragma clang diagnostic pop

關鍵的是相關命令怎麼寫,不同原因引起的警告,其命令肯定不同,這個命令不用記,xcode在給出這個警告的時候,已經把這個命令告訴我們了:

例如我們要改xmpp框架下XMPPStream下第289行的程式碼的警告:

command + B =》xcode左側導航欄上邊最右側按鈕 =》點第一個歎號 =》 搜尋xmppstream =》點選檢視此檔案警告詳情

詳情頁出現了所有xmppstream檔案的警告,找到289行的警告,這下clang的命令列出來了

對XMPPStream檔案下289行的命令處理後:

 

289行警告消失。

還有一種快速檢視警告細節的方式(有時候點會沒反應):右鍵 -》Reveal in Log 會跳到相應的警告詳細處

2、忽略某種型別的警告:

方法一:如果工程中用了xmpp,xmpp框架有很多個此種類型的警告,一個一個改,複製貼上也要好長時間,接下來介紹一種忽略同種警告的方法:

Build Settings 下找到 Other Warning Flags 填寫要忽略的警告命令(查詢命令的方法上邊已經提過了,都是,此處的命令與查到的命令有些微差別,例如-Wimplicit-retain-self要寫成-Wno-implicit-retain-self;-Wunused-variable 寫成-Wno-unused-variable;-Wundeclared-selector寫成-Wno-undeclared-selector)

做完以上操作,工程中警告少了很多。

方法二:與上述2效果相同的做法是在pch檔案最上邊新增 #pragma clang diagnostic ignored "-Wimplicit-retain-self",注意不用寫對應的push/pop程式碼,注意一定要寫在最上邊,最好是第一行。剔除了push與pop則後面所有的程式碼都具有強制消除警告作用

3、忽略某個檔案的警告:

  在build phases -》compile sources 中找到相應檔案  把此檔案中想要忽略的警告型別的命令寫上即可

4、去除整個工程的所有警告:

如果工程用到cocoapopods管理第三方,則可以在podfile檔案裡platform :ios,'6.0'  的下一行新增  inhibit_all_warnings!命令(加完之後依舊有很多警告,用其它方法處理餘下的警告)