标签:
1 // __OBJC__这个宏,在所有的.m和.mm文件中默认就定义了这个宏 2 #ifdef __OBJC__ 3 4 // 如果这个全局的头文件或者宏只需要在.m或者.mm文件中使用, 5 // 请把该头文件或宏写到#ifdef __OBJC__ 中 6 7 #import <UIKit/UIKit.h> 8 #import <Foundation/Foundation.h> 9 10 11 #ifdef DEBUG 12 #define NJLog(...) NSLog(__VA_ARGS__) 13 #else 14 #define NJLog(...) 15 #endif 16 17 #endif 18 19 /* 20 pch文件的应用常见 21 用来定义一些全局的宏 22 用来导入一些全局都能用到的头文件 23 用来自定义log 24 */
因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉。
我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时,再取消这些注释,这实在是一件无趣而耗时的事!还好,还有更优雅的解决方法,就是在项目的prefix.pch文件里加入下面一段代码,加入后,NSLog就只在Debug下有输出,Release下不输出了。
上段代码的意思就是 用宏指令做一个判断,如果DEBUG为真,则编译#ifdef到#endif宏定义,否则编译器就不编译;
这个DEBUG在哪设置呢,
在 "Target > Build Settings > Preprocessor Macros > Debug" 里有一个"DEBUG=1"。
设置为Debug模式下,Product-->Scheme-->SchemeEdit Scheme标签:
原文地址:http://www.cnblogs.com/liqiantu/p/4436530.html