#define NSLog(...)仍然将输出打印到控制台

时间:2011-03-31 19:46:53

标签: iphone objective-c nslog

我尝试在发布版本中禁用NSLog。

我将以下代码放在.pch文件中

  

#ifndef __OPTIMIZE__
  #define NSLog(...)NSLog(__ VA_ARGS__)
  #else伪
  #define NSLog(...){}
  #endif

它不起作用,所以我尝试了

  

#define NSLog(...){}

它仍然将输出打印到控制台。

任何帮助都会很好,谢谢!

5 个答案:

答案 0 :(得分:1)

您将声明自己的日志功能并使用它。如果你想要一个va列表,它的实现可以通过NSLogv。它的实现也不会在禁用时将消息转发到NSLogv,因此您可能需要多种记录器。

答案 1 :(得分:1)

您想要的内容类似于this previous SO answer on NSLog tips and tricks中对DLog的定义。

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

答案 2 :(得分:0)

确保在构建设置中定义了__OPTIMIZE__,或者在.pch文件本身中定义了更高版本,并且在前缀标头(GCC_PREFIX_HEADER)构建设置中设置了pch文件。您也可以将NSLog(...)定义为无

#define NSLog(...)

答案 3 :(得分:0)

在项目的构建设置中设置的预处理器宏:DEBUG = 1 $(已继承)

所以现在只需使用:if(DEBUG)NSLog(@“Your log”);

答案 4 :(得分:0)

在您的应用程序.pch文件中放入以下行。 定义NSLog(dese,...)

它将停止打印。