iOS開發(fā)#pragma預(yù)處理指令

  • 1 #pragma 預(yù)處理指令

在C/C++標(biāo)準(zhǔn)中,#pragma是一條預(yù)處理的指令(preprocessor directive)。簡單地說,#pragma是用來向編譯器傳達(dá)語言標(biāo)準(zhǔn)以外的一些信息。
在你的 @implementation 中使用 #pragma mark 來將代碼分割成邏輯區(qū)塊。這些邏輯區(qū)塊不僅僅使得閱讀代碼本身容易許多,也為Xcode源導(dǎo)航增加了視覺線索(#pragma mark 聲明前有一個(gè)水平分割并由破折號(hào)(-)開始)。如下:

#pragma mark - UITableViewDelegate  
  • 2 #pragma clang diagnostic clang診斷設(shè)置

在iOS開發(fā)中,clang diagnostic(clang 診斷設(shè)置) 是#pragma的常用命令:

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

-相關(guān)命令

  • 3 自定義警告Warning 或error

兩種強(qiáng)制警告的方法在視覺效果上結(jié)果是一樣的,但是警告類型略有不同,一個(gè)是-W#pragma-messages,另一個(gè)是-W#warnings。對(duì)于第二種寫法,把warning換成error,可以強(qiáng)制使編譯失敗。比如在發(fā)布一些需要API Key之類的類庫時(shí),可以使用這個(gè)方法來提示別的開發(fā)者別忘了輸入必要的信息。

#pragma message "Warning" 
#warning "Warning 2" 
#error "Something wrong"

了解更多談?wù)凮bjective-C的警告

下面來點(diǎn)黑科技(然并卵)

  • 屏蔽方法廢棄警告
#pragma clang diagnostic push    
#pragma clang diagnostic ignored "-Wdeprecated-declarations"        
[TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]];    
#pragma clang diagnostic pop  
  • 屏蔽不兼容指針類型警告
#pragma clang diagnostic push     
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"    
      //code
#pragma clang diagnostic pop  
  • 屏蔽循環(huán)引用警告
// completionBlock是手動(dòng)殺了AFURLConnectionOperation打破保留周期。
// completionBlock is manually nilled out in AFURLConnectionOperation to break the retain cycle.    
#pragma clang diagnostic push    
#pragma clang diagnostic ignored "-Warc-retain-cycles"   
    self.completionBlock = ^ {    
        ...    
    };    
#pragma clang diagnostic pop  
  • 屏蔽未使用變量警告
#pragma clang diagnostic push     
#pragma clang diagnostic ignored "-Wunused-variable"    
    int a;     
#pragma clang diagnostic pop  

轉(zhuǎn)自

關(guān)于#pragma
#pragma 處理警告
XCode啟用/關(guān)閉Clang Warnings
結(jié)束

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

推薦閱讀更多精彩內(nèi)容