KVO:我可以从具体物体中移除所有观察者

时间:2011-10-20 07:10:03

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

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

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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

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