jrd*_*oko 8 xcode delegates objective-c instance-variables dealloc
在Objective-C中,我理解如果一个对象将自己设置为另一个对象的委托,它应该将该对象的委托设置nil在其中,dealloc以避免在消息过后发送消息.
但是,在使用Accessorizer(Xcode实用程序)时,它生成的存根代码也会delegate = nil在dealloc具有委托实例变量的类中添加.那是什么意思?
McC*_*nus 11
这是一个防御性的编程举措.它正在清除对委托对象的引用,因为在您告诉它已完成委托之后,对象中的其他内容会尝试访问该委托.作为dealloc的一部分,您可能有一个方法或执行某些操作来触发调用委托的KVO通知.因此,将委托的引用设置为nil可以防止发生这种情况.如果确实发生了这种情况,你可能会遇到一些奇怪的崩溃,这些崩溃很有趣,可以重现和修复.