如何禁用NSLog遍布应用程序?

我想在应用程序的所有实例中禁用NSLog() 。 我发现一些代码,这样做:

 #ifndef DEBUG #define NSLog // #endif 

但是,将这些代码添加到每个文件是不好的主意。 我怎样才能让它更容易?

Xcode在默认情况下在支持文件组中有一个预编译的头文件( {project-name}-Prefix.pch ),这是放置项目中每个文件都要使用的代码的好地方。 为了更进一步并改进日志消息本身,请参阅是否应该在生产代码上使用NSLog()? 。

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

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

下面的两句话给出了相同的结果

 #define NSLog 

 #define NSLog // 

因为所有以//开头的文本在预编译阶段(包括“//”)被删除,

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

 #define MyLog if(0); else NSLog 

然后,我将所有的NSLog更改为MyLog在应用程序的其他地方。 它的工作就像是NSLog。 但是当你想禁用NSLog时,回到.pch文件,将0改为1并停止。

这也将照顾使用时出现的警告

 #define NSLog // 

代码:

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

当你不需要NSLOG到你的常量文件时,只需添加以下几行

 #define NSLog // 

并在需要时给予评论。