过度释放:[**VIewController scrollVie
2016-08-24 本文已影响462人
GGRay
修复bug 是开发者经常遇到并乐此不疲的一件事,尤其是看到bug现象就能想到哪了出问题了, 修复之后那种体验不可言喻,但是 最让人头痛的是 ,程序经常崩在EXC_BADACCESS 这种, 今天我就说一下其中一个bug。
先上bug截图:

是不是特别熟悉,但是这种错误,让我们无章可循,不知道究竟是哪里出了问题,
紧接着,依照我的直觉【哈哈,装个X,其实是经验而已了】, 判定可能为僵尸对象,打开xcode的僵尸对象调试

再次出发崩溃,果不其然,此时的控制台的输出为:

至少我们已经定位到了某个VC里面,而且错误原因很明明了,scrollViewDidScroll:]: message sent to deallocated instance 即 过度释放,那么问题就迎刃而解了,只需要在delloc 方法里面:
-(void)dealloc{
self.TableView.delegate = nil;
[也可能是ScrollView,看自己界面的情况而定]
}
好吧,总算解决了,继续苦逼的修复其他bug吧。