从发布版本中删除NSLog

时间:2012-10-09 10:57:22

标签: objective-c ios xcode

  

可能重复:
  Is it true that one should not use NSLog() on production code?
  Do I need to disable NSLog before release Application?

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

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

3 个答案:

答案 0 :(得分:13)

简单地删除NSLog:

#define NSLog(s,...)

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

答案 1 :(得分:4)

使用以下代码

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

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

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

答案 2 :(得分:1)

使用此

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

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