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









网友评论
例如网络请求成功后闭包回调,再次调用网络请求并成功从后打印,debug版本方法有print不会崩溃,release会崩