使用#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