讓你的程式碼更優雅---去掉Xcode工程中某種型別的警告

橫爬介士發表於2016-12-25

問題描述:

在我們的專案中,因為大量的使用第三方庫,經常會出現各種三方庫,以及我們自己再敲程式碼時候呼叫系統方法卻沒有實現到時的各種各樣的黃色警告。作為一個有追求的程式設計師,不僅僅是為了實現功能而實現功能。如何去掉這些煩人的黃色警告呢?

讓你的程式碼更優雅---去掉Xcode工程中某種型別的警告
環信easyUI中的黃色警告

軟體環境:

Xcode Version 8.2.1 (8C1002)

如何檢視警告的型別

在警告視窗,某個警告上,我們右擊,顯示出右鍵選單,選擇其中的Reveal in Log

讓你的程式碼更優雅---去掉Xcode工程中某種型別的警告
展示

之後就會在右側展示出警告型別

讓你的程式碼更優雅---去掉Xcode工程中某種型別的警告
警告型別

注意:如果需要關閉警告需要將 -W 換位-Wno-

1.關閉使用cocopods匯入的第三方庫的黃色警告

去掉cocopods中匯入三方庫的黃色警告比較簡單,只需要一行程式碼 inhibit_all_warnings!,如鍾使用的是cocopods的客戶端 cocoapods

讓你的程式碼更優雅---去掉Xcode工程中某種型別的警告
cocopods中的程式碼

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檔案,在其中新增新增關閉指定型別的程式碼即可.

讓你的程式碼更優雅---去掉Xcode工程中某種型別的警告
關閉指定檔案的警告

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!

相關文章