美文网首页
02-PCH常用的宏

02-PCH常用的宏

作者: 枫之叶_小乙哥 | 来源:发表于2016-12-24 16:24 被阅读133次

    我们通常使用宏需要注意一些什么问题呢?

    • 下面总结了一下:
    #ifndef PrefixHeader_h
    #define PrefixHeader_h
    
    /*** 如果希望某些内容能拷贝到任何源代码文件(OC\C\C++等), 那么就不要写在#ifdef __OBJC__和#endif之间 ***/
    
    
    /***** 在#ifdef __OBJC__和#endif之间的内容, 只会拷贝到OC源代码文件中, 不会拷贝到其他语言的源代码文件中 *****/
    
    #ifdef __OBJC__ // 只拷贝到OC文件
    
    /**** 日志 ****/
    #ifdef DEBUG // 调试阶段
    #define ZGKLog(...) NSLog(__VA_ARGS__)
    #else        // 发布阶段
    #define ZGKLog(...)
    #endif /* DEBUG */
    
    /**** 颜色(参数统一加括号) ****/
    #define ZGKColorA(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)/255.0]
    #define ZGKColor(r, g, b) ZGKColorA((r), (g),(b), 255)
    #define ZGKRandomColor ZGKColor(arc4random_uniform(255), arc4random_uniform(255),arc4random_uniform(255))
    
    #endif /* __OBJC__ */
    /***** 在#ifdef __OBJC__和#endif之间的内容, 只会拷贝到OC源代码文件中, 不会拷贝到其他语言的源代码文件中 *****/
    
    #endif /* PrefixHeader_h */
    
    

    注意点:

    • 1.只拷贝到OC文件
    /***** 在#ifdef __OBJC__和#endif之间的内容, 只会拷贝到OC源代码文件中, 不会拷贝到其他语言的源代码文件中 *****/
    #ifdef __OBJC__ // 只拷贝到OC文件
    
    /**** 日志 ****/
    #ifdef DEBUG // 调试阶段
    #define ZGKLog(...) NSLog(__VA_ARGS__)
    #else        // 发布阶段
    #define ZGKLog(...)
    #endif /* DEBUG */
    
    #endif /* __OBJC__ */
    
    • 2.区分调试阶段和发布阶段不同的宏定义,如:打印
    /**** 日志 ****/
    #ifdef DEBUG // 调试阶段
    #define ZGKLog(...) NSLog(__VA_ARGS__)
    #else        // 发布阶段
    #define ZGKLog(...)
    #endif /* DEBUG */
    
    • 3.宏定义的参数统一加括号,防止出错
    
    /**** 颜色(参数统一加括号) ****/
    #define ZGKColorA(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)/255.0]
    #define ZGKColor(r, g, b) ZGKColorA((r), (g),(b), 255)
    #define ZGKRandomColor ZGKColor(arc4random_uniform(255), arc4random_uniform(255),arc4random_uniform(255))
    

    相关文章

      网友评论

          本文标题:02-PCH常用的宏

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