#pragma 處理警告 clang diagnostic 的使用

使用#pragma 聲明是彰顯 Objective-C 工藝的標志之一。雖然 #pragma 最初的目的是為了使得源代碼在不同的編譯器下兼容的,但精明的Xcode編碼器將 #pragma 使用到了極致。
在現(xiàn)在的背景下,#pragma 避開了注釋和代碼之間的界限。作為預處理指令,#pragma 在編譯時進行計算。但它并不像如 #ifdef...#endif 之類的宏,#pragma 的使用方式不會改變你的應用運行時的行為。相反的,#pragma 聲明主要由 Xcode 用來完成兩個主要任務:整理代碼和防止編譯器警告。

在iOS開發(fā)過程中, 我們可能會碰到一些系統(tǒng)方法棄用警告、循環(huán)引用、未使用的變量之類的警告。我們可以使用#pragma 聲明來防止編譯器報警告,基本語法:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-相關命令"
    // 你自己的代碼
#pragma clang diagnostic pop

iOS常用的忽略警告類型

1. 未使用變量警告

#pragma clang diagnostic push   
#pragma clang diagnostic ignored "-Wunused-variable"  
    NSInteger variableValue;   
#pragma clang diagnostic pop

2. 方法棄用警告

#pragma clang diagnostic push   
#pragma clang diagnostic ignored "-Wdeprecated-declarations"  
    // Some function be deprecated   
#pragma clang diagnostic pop

3. 不兼容指針類型

#pragma clang diagnostic push   
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"  
   //  
#pragma clang diagnostic pop

4. 循環(huán)引用

#pragma clang diagnostic push  
#pragma clang diagnostic ignored "-Warc-retain-cycles" 
   //循環(huán)引用  
#pragma clang diagnostic pop

5. 內存泄漏警告

#pragma clang diagnostic push  
#pragma clang diagnostic ignored   "-Warc-performSelector-leaks"
    //內存泄漏警告
#pragma clang diagnostic pop

更多警告類型參照這個網站fuckingclangwarnings

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 2017年8月8日 星期二 晴 上班了,和孩子在一起的時間沒有休息時那么長,感覺日記記錄起來有點揪心,其實,那是自...
    愛蓮_8f0d閱讀 1,640評論 2 2
  • 那天一朋友告訴我:他打孩子了,事后他非常、非常后悔,以至于那個晚上失眠了大半夜,他擔心孩子會因此而記恨他。 其實真...
    西瓜甜甜啦閱讀 1,246評論 38 44
  • 《萬歷十五年》第二章 首輔申時行。 上午女兒在酒店備考,我散步去了靜安寺。中午她繼續(xù)備考,我讀書。...
    云卷云舒0412閱讀 193評論 0 1
  • 斷斷續(xù)續(xù)畫了20多天,終于完工了,還有很多問題,實在沒耐心了,就這樣吧。 狗年即將隆重登場,祝愿各位編輯、各位大神...
    總有一朵花是香的閱讀 587評論 12 13