【问题标题】:Setting delegate to nil in dealloc在 dealloc 中将委托设置为 nil
【发布时间】:2011-09-01 09:03:14
【问题描述】:

在 Objective-C 中,我理解如果一个对象将自己设置为另一个对象的委托,它应该在其 dealloc 中将该对象的委托设置为 nil 以避免在它消失后收到发送消息。

但是,当使用 Accessorizer(一个 Xcode 实用程序)时,它生成的存根代码还会将 delegate = nil 放入具有委托实例变量的类的 dealloc 中。这样做的目的是什么?

【问题讨论】:

    标签: objective-c xcode delegates instance-variables dealloc


    【解决方案1】:

    这是一种防御性的编程动作。它正在清除对委托对象的引用,以防在你告诉它你已经完成它之后,你的对象中的其他东西试图访问委托。作为你的 dealloc 的一部分,你可能有一个方法或做一些事情来触发一个调用委托的 KVO 通知。因此,将委托的引用设置为 nil 可以防止这种情况发生。如果确实发生了,您最终可能会遇到一些奇怪的崩溃,这些崩溃很有趣,可以重现和修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多