相信不管是大牛,还是新手,都会经历和EXC_BAD_ACCESS亲密接触的时光。面对由此产生的Crash,Xcode只提供了很有限的信息,是的定位错误比较麻烦。
产生EXC_BAD_ACCESS错误的原因主要有这几种:
- 向已release的对象发送消息(或者说调用该对象的方法)
- 对同一对象重复release
- 对标记为autorelease的对象进行release
Xcode5中设定NSZombieEnabled的步骤:Xcode5菜单 - > Product - > Scheme - > Edit Scheme - > 勾选Enable Zombie Object。参照图例
激活了zombie模式之后,程序出现EXC_BAD_ACCESS错误时,就会再控制台打印出具体出现报错的对象和调用的方法,问题一目了然。
求人不如求己,英文好的同志就多看官方文档吧:
https://developer.apple.com/library/ios/technotes/tn2239/_index.html
下面的链接详细讲解了NSZombieEnable的原理,供大家研究学习: