零碎知识

  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时,这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【杂乱中的杂乱】 MRC和ARC混编设置方式 1、调用代码使APP进入后台,达到点击Home键的效果 2、带有中文...
    SunshineBrother阅读 3,897评论 1 15
  • 不系统化记录整理只记下自己不熟悉的小知识点 OOP 类与对象 内聚性好,松耦合侧重于功能(面向对象侧重于流程)类是...
    MWhite阅读 3,064评论 0 0
  • 新人如何注册德升环球账号! 如何正确的引导新用户注册: 从【德升环球】转发商城链接给到新用户,引导点击【我的】→头...
    踏平坎坷阅读 1,638评论 0 0
  • 查理芒格说:“每一次不幸都是良好表现的机会,每一次不幸都是学东西的机会,你的任务就是不要在自怜中淹没,而是以建设性...
    锦语良言阅读 3,655评论 0 1
  • 现在很多人都觉得大学毕业没有什么用?觉得大学生比比皆是,没有什么竞争优势,还不如学一门技术,或者早点出来闯一闯。 ...
    往昔岁月阅读 1,612评论 0 0