【发布时间】:2016-11-26 08:16:57
【问题描述】:
我正在尝试在键路径上实现一个安全的键值观察。假设我有一个名为person 的数据模型对象,它有一个workplace 属性。 workplace 又具有我希望观察的 address 属性,因此我通过以下调用设置键值观察:
[person addObserver:theObserver
forKeyPath:@"workplace.address"
options:NSKeyValueObservingOptionNew
context:NULL];
在此人不更换工作场所之前,这可以正常工作。一旦发生这种情况:
person.workplace = newWorkplace;
KVC 系统正确地使应用程序崩溃,说“oldAddress 已被释放,而键值观察者仍向其注册”。 (老地址是以前工作单位的地址)。
不幸的是,我无法调整“人”对象类的实现来通知观察者工作场所将要消失。有什么模式可以避免这种崩溃吗?也许可以得到一些其他的通知?在 KVC 的情况下,keypath 是如何遍历的,你是否可以访问这个链?
【问题讨论】:
标签: ios cocoa key-value-observing