iOS宏的使用和技巧

作者: 永断阎罗 | 来源:发表于2017-06-21 18:09 被阅读0次

    1. 替换字符

    ///屏幕宽度
    #define kMainScreenWidth ([UIScreen mainScreen].bounds.size.width)
    ///屏幕高度
    #define kMainScreenHeight ([UIScreen mainScreen].bounds.size.height)
    

    2. 简单函数

    //返回二倍原型图相应尺寸
    #define Size(originalSize) ([UIScreen mainScreen].bounds.size.width/750*originalSize)
    //返回十六进制颜色值
    #define color(string) 0x##string
    //比较大小
    #define MIN(A,B) (A < B ? A : B)
    

    3. 复杂函数

    符号 作用 实例
    ... 实现可变参数
    ## 连接符号,实现前后连接 #define weakObj(obj) _weak typeof(obj) weak##obj = obj
    # 原样输出 #define __toString(x) #x
    //系统工具方法
    __VA_ARGS__ :宏定义中的...中的所有剩余参数
    __COUNTER__ 无重复的计数器,从程序启动开始每次调用都会++,常用语宏中定义无重复的参数名称
    __FILE__:当前文件的绝对路径,常见于log中
    __LINE__:展开该宏时在文件中的行数,常见于log中
    __func__:所在scope的函数名称,常见于log中
    

    原文链接

    4.常用宏

    原文链接

    //文件目录
    #define kPathTemp                   NSTemporaryDirectory()
    #define kPathDocument               [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
    #define kPathCache                  [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]
    
    // 获取RGB颜色
    #define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]
    #define RGB(r,g,b) RGBA(r,g,b,1.0f)
    
    //System version utils
    #define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
    #define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
    #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
    #define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
    #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
    //实例
    //大于等于7.0的ios版本
    #define iOS7_OR_LATER SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")
    //大于等于8.0的ios版本
    #define iOS8_OR_LATER SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")

    相关文章

      网友评论

        本文标题:iOS宏的使用和技巧

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