美文网首页iOS知识点
iOS开发#pragma预处理指令

iOS开发#pragma预处理指令

作者: A訫飛Flyme | 来源:发表于2017-06-24 14:45 被阅读11次
    • 1 #pragma 预处理指令

    在C/C++标准中,#pragma是一条预处理的指令(preprocessor directive)。简单地说,#pragma是用来向编译器传达语言标准以外的一些信息。
    在你的 @implementation 中使用 #pragma mark 来将代码分割成逻辑区块。这些逻辑区块不仅仅使得阅读代码本身容易许多,也为Xcode源导航增加了视觉线索(#pragma mark 声明前有一个水平分割并由破折号(-)开始)。如下:

    #pragma mark - UITableViewDelegate  
    
    • 2 #pragma clang diagnostic clang诊断设置

    在iOS开发中,clang diagnostic(clang 诊断设置) 是#pragma的常用命令:

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

    -相关命令

    • 3 自定义警告Warning 或error

    两种强制警告的方法在视觉效果上结果是一样的,但是警告类型略有不同,一个是-W#pragma-messages,另一个是-W#warnings。对于第二种写法,把warning换成error,可以强制使编译失败。比如在发布一些需要API Key之类的类库时,可以使用这个方法来提示别的开发者别忘了输入必要的信息。

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

    了解更多谈谈Objective-C的警告

    下面来点黑科技(然并卵)

    • 屏蔽方法废弃警告
    #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  
    
    • 屏蔽循环引用警告
    // completionBlock是手动杀了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  
    

    转自

    关于#pragma
    #pragma 处理警告
    XCode启用/关闭Clang Warnings
    结束

    相关文章

      网友评论

        本文标题:iOS开发#pragma预处理指令

        本文链接:https://www.haomeiwen.com/subject/cerkcxtx.html