【问题标题】:setting delegate to nil to "avoid message sent to deallocated instance"将委托设置为 nil 以“避免将消息发送到已释放的实例”
【发布时间】:2011-05-30 07:48:52
【问题描述】:

如果您有一个实现委托的视图控制器,那么您应该在解除分配时将委托设置为 nil 吗?我一直收到这条消息。

我不确定“将委托设置为 nil”,这是什么意思?谁能给我一个简单的例子来澄清这一点?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    在解除分配 SomeObject 的旧委托之前,您很可能只需要执行“SomeObject.delegate = nil”。您能否提供出现此警告的任何代码 sn-ps?

    【讨论】:

    • 我实际上遇到了一个非常奇怪的错误。我有一个 UITabBarApplication。我尝试在不更改选项卡的情况下使用应用程序。一段时间后,我尝试更改选项卡并收到一条消息发送到已释放实例。但是,如果在应用程序启动后切换选项卡,我没有收到此错误
    【解决方案2】:

    在释放控制器之前将委托设置为 nil 总是一个好主意。

    它可能不会立即被释放,并且可能会意外回调您的代码,这些代码可能已超出范围,也可能未超出范围 -> 崩溃。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2011-06-16
      相关资源
      最近更新 更多