#define NSLog (...) 仍然将输出打印到控制台
我尝试在发布版本中禁用 NSLog。
我将以下代码放入 .pch 文件中
#ifndef __优化__
# 定义 NSLog(...) NSLog(__VA_ARGS__)
#其他
# 定义 NSLog(...) {}
#endif
不起作用,所以我尝试了
# 定义 NSLog(...) {}
它仍然将输出打印到控制台。
任何帮助都会很好,谢谢!
I tried to disable NSLog in release build.
I put the following code in .pch file
#ifndef __OPTIMIZE__
# define NSLog(...) NSLog(__VA_ARGS__)
#else
# define NSLog(...) {}
#endif
It's not working, so I tried
# define NSLog(...) {}
It still prints output to the console.
Any help will be good, thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以声明自己的日志函数并使用它。如果你想要一个 va 列表,它的实现可以通过 NSLogv 。当禁用时,它的实现也不会将消息转发到 NSLogv,因此您可能需要不止一种类型的记录器。
you would declare your own log function and use that instead. its implementation could go through NSLogv, if you want a va list. its implementation would also not forward the messages to NSLogv when disabled, so you will likely need more than one flavor of logger.
听起来你想要的类似于 这个关于 NSLog 提示的上一个 SO 答案中的 DLog 定义和技巧。
Sounds like what you want is similar to this definition for DLog from this previous SO answer on NSLog tips and tricks.
确保在构建设置或 .pch 文件本身的更高版本中定义了 __OPTIMIZE__,并且在 前缀标头 (GCC_PREFIX_HEADER) 构建设置中设置了 pch 文件。你也可以将 NSLog(...) 定义为空
#define NSLog(...)
Make sure
__OPTIMIZE__
is defined in the build settings or higher up in the .pch file itself and that the pch file is set in the Prefix Header (GCC_PREFIX_HEADER) Build Settings. Also you can define NSLog(...) as nothing#define NSLog(...)
在项目的构建设置中设置的预处理器宏具有: DEBUG=1 $(inherited)
所以现在只需使用: if(DEBUG) NSLog(@"Your log");
Preprocessor macro set in Build Setting of project having: DEBUG=1 $(inherited)
So now just use : if(DEBUG) NSLog(@"Your log");
在您的应用程序 .pch 文件中放置以下行。
Define NSLog(dese,...)
它将停止打印。
In you application .pch file put following line.
define NSLog(dese,...)
It will stop printing.