我经常得到excbadaccess.极少.但有时它会发生.
我尝试了僵尸构建,我得到了这个:
*** -[BGDetailBusinessViewController scrollViewDidScroll:]: message sent to deallocated instance 0x189f09c0
我想这是由于以下原因
我在滚动时弹出一个BGDetailBusinessViewController.
视图仍在滚动.
它在某处发送通知来调用它的委托,即BGDetailBusinessViewController对象.因为对委托的引用很弱,我认为这是导致问题的原因.
现在,我究竟能解决这个问题?
弱参考工作的方式是如果对象被解除分配它将是正确的?
也许由于僵尸而不是零.但是,这意味着如果我使用zombie build构建此bug将会出现.
如果一个物体变成了僵尸,那么所有弱的物体都会被吸引到那个物体上吗?
无论如何,我想知道如何修复这个bug,因为我已经设法找到它.
有人说我应该在dealloc中将委托设置为nil.
如果我们启用僵尸对象,是否所有弱引用都被填充?另有建议.当一个对象被释放时,所有弱引用都应该被填充.
实际上我真的想不出任何理由,无论是否有僵尸,访问解除分配的对象都可能发生.如果引用很强,则不会释放对象.如果引用很弱,那么在取消分配对象时它会被填充.
然而,应用确实崩溃了错误:消息发送到解除分配的实例0x189f09c0
您必须使用dealloc方法将委托设置为nil
scrollView.delegate = nil;
解除分配的对象被释放(并从内存中删除)但未设置为nil.你必须明确地将它设置为零.