【问题标题】:KVO: Can I remove all observers from concrete objectKVO:我可以从具体对象中删除所有观察者吗
【发布时间】:2011-12-11 13:15:42
【问题描述】:

我正在使用键值观察。我有 object_1 (NSManagedObject) 和其他一些对象观察者。当我从托管对象上下文中删除 object_1 时,我的程序崩溃了。

CoreData:错误:严重的应用程序错误。在核心数据更改处理期间捕获到异常。这通常是 NSManagedObjectContextObjectsDidChangeNotification 观察者中的错误。

我可以在 dealloc 方法(或其他地方)中添加一些东西来删除 object_1 的所有观察者吗?或者唯一合适的决定是在我即将从托管对象上下文中删除 object_1 并通过其他对象收听此通知时发送通知(从 object_1 的观察者中删除自己)?

【问题讨论】:

    标签: objective-c cocoa key-value-observing


    【解决方案1】:

    您需要确保在释放对象之前删除观察者。这是 Key Value Observer 的缺点。

    正如您所建议的,一种方法是通过从您的 dealloc 方法中触发的删除。显然你不知道谁在你的对象上有观察者,但仍然需要通知他们。

    我会描述您需要做什么,但也许只需查看bj-homer 的问题答案When should I remove observers? Error about deallocating objects before removing observers

    如果这是你所追求的,那么就在那里投票。如果没有,请在此处投反对票。无论如何,希望它有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多