1

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

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

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

3 回答 3

13

要简单地删除 NSLog:

#define NSLog(s,...)

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

于 2012-10-09T11:11:58.220 回答
4

使用以下代码

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

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

另外,当您检查控制台时,您是否检查过您是否使用了发布模式?

于 2012-10-09T11:03:05.147 回答
1

用这个

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

NSLog如果您在模拟器上运行它,这将打印出来..

于 2012-10-09T11:10:07.170 回答