相信很多开发人员都会自定义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,如下图所示:
这个地方决定了我们的编译模式,如果你以Debug模式编译再发布,那#ifdef DEBUG就没有意义了,发布时还是会输出一大堆的日志信息。
所在,在发布程序时,请记得将该选项切换成Release!!