在所有的預處理指令中,#Pragma 指令可能是最復雜的了,它的作用是設定編譯器的狀態(tài)或者是指示編譯器完成一些特定的動作。#pragma指令對每個編譯器給出了一個方法,在保持與C和C ++語言完全兼容的情況下,給出主機或操作系統(tǒng)專有的特征。由于太復雜,在OC中主要在以下幾個方面使用到:
用途一:用于標識代碼
它們告訴Xcode編譯器,要在編輯器窗格頂部的方法和函數(shù)彈出菜單中將代碼分隔開,如下圖所示:

pragma
一些類(尤其是一些控制器類)可能很長,方法和函數(shù)彈出菜單可以便于代碼導航。此時加入#pragma 指令對代碼進行邏輯組織很有效果。
值得注意的地方
**#pragma mark – 的“-”后面不能有空格。
如果你的標志沒有出現(xiàn)在彈出菜單中,比如沒有分隔線出現(xiàn),請在Xcode菜單 “Preferences..”中的 “Code Sense”選項取消選中”Sort list alphabetically”即可。
用途二:用對OC警告的處理
一個忽略整數(shù)警號的例子:
//#pragma clang diagnostic push
//#pragma clang diagnostic ignored "-Wunused-variable"
int a;
//#pragma clang diagnostic pop
warnings是編碼中很重要的一個環(huán)節(jié),編譯器給出合理的warning能幫助開發(fā)者找到自己代碼的問題,防止很多bug產(chǎn)生。 默認用XCode創(chuàng)建一個工程,會自動開啟一些重要的warnings,但是更多的時候,我們需要編譯器更完整的提醒。
iOS開發(fā)采用Clang編譯器。LLVM是一個開源的編譯器架構,Clang是LLVM的一個編譯器前端。
更多關于 Clang 和 LLVM請點擊: iOS——LLVM、Clang淺析
想了解更多關于#pragma請移步到以下文章: