经常会用到NSLog来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理。 我们在发布正式版的时候一定要屏蔽掉所有后台输出,因为这些输出还是比较消耗系统资源的。 往往到了这个时候,我们不得不去一行一行的找到NSLog调用,然后注释掉。 这样做在项目小的时候还比较有效,但随着项目规模的增长,就会变得越来越难控制。 下面就给大家介绍一个简单的方法,让我们在生成Release版本时不需要进行任何更改即可屏蔽所有的Log输出
1.首先我们先要定义这样一段预处理命令,建一个.h文件,例如 NSLog.h
#ifdef DEBUG
#define NSLog(FORMAT, ...) do{fprintf(stderr,"[DEBUG] > [%s %s] [Line %d] %s %s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String],[[[NSString stringWithUTF8String:__FUNCTION__] lastPathComponent] UTF8String], __LINE__,[[[GJLogFormatter dateFormatterWithFormat:@"HH:mm:ss.SSS"] stringFromDate:[NSDate date]] UTF8String], [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);}while(0)
#else
#define NSLog(format, ...)
#endif
检查DEBUG标志是否正确定义,xcode一般会在debug运行配置项里面已经定义号了DEBUG标志,如果没定义我们就自己写上,以我的xcode 4 为例,如下图: