使用NSLog的一个风险是:它的运行会占用时间和设备资源。app
简单而粗暴的解决方案是:在release前,将全部的NSLog注释掉。简单有效,但反作用是:下次你要调试时,又得将NSLog一个个取消注释。iphone
以release模式编译的程序不会用NSLog输出,而以debug模式编译的程序将执行NSLog的所有功能。函数
解决步骤:spa
修改<AppName>-Prefix.pch ,增长如下的宏代码.net
[cpp] view plaincopydebug
#ifdef DEBUG 调试
# define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); 日志
#else orm
# define DLog(...); blog
#endif
在程序中使用DLog来替换原来的NSLog
[cpp] view plaincopy
DLog(@"当前程序目录是:%@", [self applicationDocumentsDirectory ]);
修改项目的配置,使得在debug编译的时候,编译DLog的宏,产生详细的日志信息,而release的时候,不产生任何控制台输出
在Other Linker Flags 中,在debug的时候,加入编译属性 -DEBUG
这样控制台会显示这样的日志信息
[cpp] view plaincopy
2011-12-27 22:23:53.303 IManager[5449:b603] [文件名:/Users/roamer/Project/ÂõΩÊ≥∞ÂêõÂÆâ/Ëꕉ∏öÈÉ®ÁưÁêÜiphone/IManager/IManager/AppDelegate.m]
[函数名:-[AppDelegate application:didFinishLaunchingWithOptions:]]
[行号:37]
当前程序目录是:/Users/roamer/Library/Application Support/iPhone Simulator/4.3.2/Applications/6B0E7B08-5528-468A-B728-0C4580805368/Documents