我正试图在keypaths上实现安全的key值观察。假设我有一个名为person
的数据模型对象,它具有workplace
属性。反过来workplace
有一个address
属性,我希望看到,所以我设置键值通过以下调用观察:安全密钥值观察keypaths
[person addObserver:theObserver
forKeyPath:@"workplace.address"
options:NSKeyValueObservingOptionNew
context:NULL];
这工作得很好,直到该人不改变工作环境。一旦发生这种情况:
person.workplace = newWorkplace;
的KVC系统崩溃正确地说,“oldAddress被释放,而键值观察家仍用它注册”的申请。 (旧地址是以前工作地点的地址)。
不幸的是,我不能调整'人'对象类的实现来通知观察者,工作场所将要消失。有没有什么模式可以避免这种崩溃?也许可以得到一些其他的通知?在KVC的情况下如何遍历keypath,并且您是否有权访问此链?