如何在整个应用程序中禁用NSLog?

时间:2013-04-14 17:26:28

标签: ios objective-c xcode c-preprocessor nslog

我想在应用中的所有实例中停用NSLog()。我发现了一些代码:

#ifndef DEBUG
#define NSLog //
#endif

但是将此代码添加到每个文件并不是一个好主意。我怎样才能让它变得更容易?

5 个答案:

答案 0 :(得分:10)

Xcode有一个预编译的头文件(默认情况下在Supporting Files组中为{project-name}-Prefix.pch),这是放置将在项目中的每个文件中使用的代码的好地方。要更进一步并改进日志消息本身,请参阅Is it true that one should not use NSLog() on production code?

答案 1 :(得分:5)

将以下行添加到常量文件中:

#define DEBUGGING NO    //or YES
#define NSLog if(DEBUGGING)NSLog

以下两句话给出相同的结果

#define NSLog

#define NSLog //

因为所有以//开头的文本都会在预编译阶段被删除(" //"包含在内)

答案 2 :(得分:2)

我所做的是将它放在预编译的头文件( YourAppName.pch )中:

#define MyLog if(0); else NSLog

然后我将应用程序中的所有NSLog更改为MyLog。它就像是NSLog一样工作。但是当您想要禁用NSLog时,请返回 .pch 文件并将0更改为1并将所有日志记录停止。

答案 3 :(得分:2)

这也将处理使用

时出现的警告
#define NSLog //

代码:

#ifndef DEBUG
  #define NSLog(...)
#endif

答案 4 :(得分:0)

当您不需要NSLOG到常量文件

时,只需添加以下行
#define NSLog                       //

并在需要时对其进行评论。