您的位置:首页 > 其它

开发笔记 - 设置NSZombieEnabled调试EXC_BAD_ACCESS

2016-01-10 12:58 351 查看
前言:当你对已释放的对象发送消息(90%的可能是对引用计数为0的对象再release)或release那些autorelease对象时,就会出现报EXC_BAD_ACCESS这样的错误。默认设置下 Xcode不会给你定位具体是哪一行代码不该去使用已释放的对象,或者release用错了。

设置xcode环境变量NSZombieEnabled,MallocStackLogging的步骤:Product -> EditScheme(option+command+R) -> Diagnostics ,勾选“Objective-C”之后的“Enable Zombie Objects”。EnableZombie Objects







说明:设置NSZombieEnabled环境变量后,一个对象销毁时会被转化为_NSZombie;设置NSZombieEnabled后,当你向一个已经释放的对象发送消息,这个对象就不只是报EXC_BAD_ACCESS Crash,还会放出一个错误消息,然后以一种可预测的可以产生debug断点的方式消失, 因此我们可以找到具体或者大概是哪个对象被错误的释放或引用了。

**注意:**NSZombieEnabled只能在调试的时候使用,千万不要忘记在产品发布的时候去掉,因为NSZombieEnabled不会真正去释放dealloc对象的内存,一直开启后果自负!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: