从发布版本删除NSLog

可能重复:
是不是应该在生产代码中使用NSLog()?
在发布应用程序之前是否需要禁用NSLog?

我需要在发布版本中删除我的项目中存在的所有NSLOG。 我已经尝试使用下面的代码,但仍然通过电话访问构build,仍然NSLOG显示在控制台。

#ifdef DEBUG #define debug_NSLog(format, ...) NSLog(format, ## __VA_ARGS__) #else #define debug_NSLog(format, ...) #endif 

要简单地删除NSLogs:

 #define NSLog(s,...) 

没有指定replace的#define将不会replace,删除与#define匹配的任何内容。 这适用于简单的令牌定义和类似于上面的函数式定义。

使用下面的代码

 #ifdef DEBUGGING # define DBLog(fmt,...) NSLog(@"%@",[NSString stringWithFormat:(fmt), ##__VA_ARGS__]); #else # define DBLog(...) #endif 

确保编译器标志正确设置。

另外,当你检查控制台,你检查你是否使用释放模式?

用这个

 #if TARGET_IPHONE_SIMULATOR #define NSLog(fmt,...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); #else #define NSLog(...) #endif 

这将打印NSLog如果你正在模拟器上运行它..