
XCode deBUG 模式与 release 模式的一大重要区别:
deBUG 模式下,可以方便的进行调试,NSAssert 是暴力调试的一大利器
如果只使用一般的 if() {} 来进行 BUG 的拣选的话,会存在一些比较麻烦的因素:
1。在你真正发布程序的时候,需要手动的去找到这些代码并将其注释掉
2。if(){} 和程序逻辑混在一堆,你找起来的时候是很麻烦的!
如果用到了 NSAssert 的话,你仅需要由 deBUG 转换为 release 模式,
所有的 断言将会被自动禁用掉,你不必再去手动的注释掉之前用来拣选 BUG 的代码
省去了找寻的麻烦。同时,拣选BUG 的 NSAssert 还在那儿,也方便你日后对程序进行升级~
有没有遇到过这样的情况:
1。有时侯在release模式下运行程序的时候,没有问题~ 切换到 deBUG 模式下,程序跑不通了
2。有时候在deBUG 模式下运行程序的时候,没有问题~ 切换到 release 模式下,程序跑不通了
为什么?
情况1的原因我找到一个:
deBUG模式下会试图将一些对象打印出来的。有些对象能够正常使用,但在打印的时候会出一些问题,导致BUG;
情况2的原因也找到一个:
参考我前一篇转载的文章。
| 4 down vote favorite 1 share [g+] share [fb] share [tw] | I am using NSAssert() calls within an iPhone application and my understanding from the Apple docs is that assertions are not compiled into the code if NS_BLOCK_ASSERTIONS is defined. To turn off assertions,in a header file I declare: #define NS_BLOCK_ASSERTIONS However,the assert code still seems to run. Is there something I am missing here? Thanks John iphone objective-c xcode debugging
| ||
| Feedback |
| up vote 11 down vote accepted | If you created your Xcode project based on one of the standard templates,the Cocoa headers (including Try putting
Or put
| ||||||
|
以上是内存溢出为你收集整理的NS_BLOCK_ASSERTIONS in Objective-C全部内容,希望文章能够帮你解决NS_BLOCK_ASSERTIONS in Objective-C所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)