IOS-添加宏定义上架自动屏蔽NSLog

在X-code做开发调试往往需要打印一些调试信息做debug用,大家都知道打印信息的地方多了之后再模拟器上跑可能不会有什么问题,因为模拟器用的是电脑的硬件。但是,当应用在设备上运行时这些输出语句会很大程度上影响应用的性能。针对这种问题可以写一些宏(一改全改)来调试这些调试语句信息的输出。省得发布之前还得全工程搜索屏蔽这些暴力调试语句。

为什么发布之前要屏蔽NSLog

  1. NSLog 消耗系统资源(暴力调试)
  2. 输出数据可能暴露app保密数据

在Release版本下禁止输出NSLog内容
在预处理文件(.pch)添加下面代码块

#if DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#define debugMethod() NSLog(@"%s",__func__)、
#else
#define NSLog(...)
#define debugMethod()
#endif

上面代码的意思就是: 用宏指令做一个判断,如果DEBUG为真,则编译#ifdef到#endif宏定义,否则编译器就不编译。

如何设置DEBUG和RELEASE


x-code正上面工具栏product->Scheme->Edit Scheme->Bulid Configuration设置成debug,此刻打印NSLog,如果设置成release,不打印NSLog。

推荐阅读更多精彩内容