作为一个非科班的码农,debug时唯一的一招就是print()
。我不是NSLog()
党,而且自从用上了Xcode 8、设置了OS_ACTIVITY_MODE = disable
后,NSLog()
就更不常用了。
不过可以知道的是,NSLog()
在发布版本的App中,是会被编译器优化而去掉的。
更新:有同学指出,NSLog()也并不会因为Release Build而被优化。我刚刚做了个小实验,也证实了这一点。请看最后的验证测试。
问题是print()或debugPrint()也会被优化吗?
其实是不会的(笑)。
![](https://img.haomeiwen.com/i1661261/8065f009fc39958b.jpg)
如果你每次网络请求完,都习惯性地print一下json,或fetch完图片print一下,这些都其实会吃一部分性能。打开Time Profiler,你就会发现性能还是有一定比重的损耗的。
好吧,我把所有的print()就都注释掉!!
算了吧还是,想想都不靠谱。作为一个使命是解放生产力的码农,怎么能做这么二的事情?
解决方案来了
以下是我们的老朋友喵神onevcat给的解决方法,原文请戳这里。我们的目的是在开发环境中print,且在发布的构建中不print。
第一步:设置DEBUG Flag。
![](https://img.haomeiwen.com/i1661261/c8e8b437424a3896.png)
网友评论
例如网络请求成功后闭包回调,再次调用网络请求并成功从后打印,debug版本方法有print不会崩溃,release会崩