关于自定义NSLog需要注意的一点 (自定义SALog)

相信很多开发人员都会自定义NSLog的输入方式,一方面可以自定义自己的输出格式,有利于调试程序,比如说日志输出时打印程序所在的文件与行数;另一方面有利控制日志的输出,比如调试时输出日志,但发布后不输出。
示例:

1
2
3
4
5
6
// 自定义输出 SALog(...)
#ifdef DEBUG
#define SALog(...) NSLog(@"%s-%d行:%@", __PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:__VA_ARGS__])
#else
#define SALog(...)
#endif

问题来了,很多人都知道#ifdef DEBUG的意义在于只有调试时才输出日志,发布时不输出日志,但很多人都只知道在调试时确实有日志输出,可发布呢?无人关心了。其实有个地方是需要设置的,Product–Scheme–Edit Scheme–Info中的Build Configuration,如下图所示:

41D9259D-4393-49E8-AA8E-84A8B266869B

这个地方决定了我们的编译模式,如果你以Debug模式编译再发布,那#ifdef DEBUG就没有意义了,发布时还是会输出一大堆的日志信息。
所在,在发布程序时,请记得将该选项切换成Release!!

Leave a Reply