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

問題描述:

在咱們的項目中,由於大量的使用第三方庫,常常會出現各類三方庫,以及咱們本身再敲代碼時候調用系統方法卻沒有實現到時的各類各樣的黃色警告。做爲一個有追求的程序員,不單單是爲了實現功能而實現功能。如何去掉這些煩人的黃色警告呢?
javascript

環信easyUI中的黃色警告

軟件環境:

Xcode Version 8.2.1 (8C1002)java

如何查看警告的類型

在警告窗口,某個警告上,咱們右擊,顯示出右鍵菜單,選擇其中的Reveal in Log
程序員

展現

以後就會在右側展現出警告類型
安全

警告類型

注意:若是須要關閉警告須要將 -W 換位-Wno-ui

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

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

cocopods中的代碼

2.關閉整個工程中某個類型的警告

Xcode爲咱們提供了方法,只須要簡單的配置便可。3d

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一樣給咱們提供了配置方法,關閉指定文件中的某種類型的警告很簡單。code

TARGETS -- > Build Phases --->Compile Sources中雙擊須要關閉警告的.m文件,在其中添加添加關閉指定類型的代碼便可.
cdn

關閉指定文件的警告

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!

相關文章
相關標籤/搜索