美文网首页iOS开发小技巧iOS开发实用技术iOS开发
#pragma 处理警告 clang diagnostic 的使

#pragma 处理警告 clang diagnostic 的使

作者: 我是不是叫没烦恼 | 来源:发表于2017-10-24 15:36 被阅读498次

    使用#pragma 声明是彰显 Objective-C 工艺的标志之一。虽然 #pragma 最初的目的是为了使得源代码在不同的编译器下兼容的,但精明的Xcode编码器将 #pragma 使用到了极致。
    在现在的背景下,#pragma 避开了注释和代码之间的界限。作为预处理指令,#pragma 在编译时进行计算。但它并不像如 #ifdef...#endif 之类的宏,#pragma 的使用方式不会改变你的应用运行时的行为。相反的,#pragma 声明主要由 Xcode 用来完成两个主要任务:整理代码和防止编译器警告。

    在iOS开发过程中, 我们可能会碰到一些系统方法弃用警告、循环引用、未使用的变量之类的警告。我们可以使用#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. 循环引用

    #pragma clang diagnostic push  
    #pragma clang diagnostic ignored "-Warc-retain-cycles" 
       //循环引用  
    #pragma clang diagnostic pop
    

    5. 内存泄漏警告

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

    更多警告类型参照这个网站fuckingclangwarnings

    相关文章

      网友评论

        本文标题:#pragma 处理警告 clang diagnostic 的使

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