objective-c – KVO:我可以从具体对象中删除所有观察者

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

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

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

解决方法

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

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

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

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

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录<future>future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...