美文网首页
零碎知识

零碎知识

作者: Andy0528 | 来源:发表于2017-10-18 14:14 被阅读8次
    1. 标记方法为弃用
    //系统定义的两个宏
    #define DEPRECATED_ATTRIBUTE        __attribute__((deprecated))
    #define DEPRECATED_MSG_ATTRIBUTE(msg) __attribute((deprecated((msg))))
    
    eg:
    @interface MyClass : NSObject { ... }
    -(void)foo:(id)x  DEPRECATED_ATTRIBUTE ;
    
    // If you want to specify deprecated message:
    -(void)bar:(id)x DEPRECATED_MSG_ATTRIBUTE("Use baz: method instead.");
    ...
    @end
    
    1. 判断当前设备是模拟器还是真机
    #if TARGET_IPHONE_SIMULATOR  
        // 模拟器  
    #elif TARGET_OS_IPHONE  
        // 真机  
    #endif  
    
    1. 判断当前设备系统
    #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0  
        // 这里写设备系统大于8.0 以上的代码  
    #else  
        // 这里写设备系统小于8.0以上的代码  
    #endif  
    
    1. 在发布模式下屏蔽输出函数
    #ifdef DEBUG
    #define NSLog(format, ...) NSLog(format, ##__VA_ARGS__)
    #else
    #define NSLog(format, ...)
    

    VA_ARGS是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。

    相关文章

      网友评论

          本文标题:零碎知识

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