在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程。但是一个发布的程序,里面带有太多的NSLog输出,肯定对于App性能有所影响,这时候我们可以使用一个宏定义来处理,在开发的时候使用DEBUG模式,在发布的时候使用RELEASE模式。这样,发布的App就不会在程序内部做大量的NSLog输出了。
简单的代码如下,
?
1
2
3
4
#if defined(DEBUG)||defined(_DEBUG)
NSLog(@
"测试代码"
)
NSLog(@
"Test Coding"
)
#endif
上面的#if #endif宏定义的意思就是如果定义了DEBUG,那么就使用NSLog输出;否则这段代码直接忽略。有人会疑问这个DEBUG和_DEBUG来自哪里,这个其实不用担心,这个来自于Xcode的默认设置,我们可以取消DEBUG模式,开启RELEASE发布模式,如下截图所示,
选择Product->Scheme->Edit Scheme,
下图可以选择Debug和Release两种模式,
这里我选择了Release,那么则默认没有定义Debug,则上面代码中#if...#endif之间的输出NSLog不会执行。这样就在发布程序的时候,节省了一些硬件设备的资源。
问题:
当Xcode处在Release模式下时,断点调试无法打印变量
解决办法:
在Build Setting中搜索“optimization level”,可以看到Release默认的值为“Fastest,Smallest”
可以对照Debug的值将Release的值也改为“None”。
参考: https://www.jianshu.com/p/779bccbac01f
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)