我最近才注意到我的一个应用程序发生崩溃,当时一个对象试图向它的委托发送消息并且委托已经被释放。
目前,就在调用任何委托方法之前,我运行了这个检查:
if (delegate && [delegate respondsToSelector:...]){
[delegate ...];
}
但显然,如果委托不是 nil,但已被解除分配,这并不能说明问题。
除了在委托的方法中将对象的委托设置为 nil 之外dealloc
,还有一种方法可以检查委托是否已经被释放,以防万一我不再引用该对象。