我正在 iOS 中实现一个类,我想创建一个称为KVO 兼容DocumentsManager
的一对多属性。documents
它似乎主要工作,并且我的 KVO 访问器和修改器方法被调用。然而,困扰我的事情是,直接在NSMutableArray
通过调用我的实例返回的代理上进行的任何更改mutableArrayValueForKey:
都不会通知观察者。
所以,这段代码通知我关于插入@"aaa"
但不是 of 的信息@"bbb"
,尽管它们实际上都插入了可见的docsProxy
. 这是预期的行为吗?如果是这样,使用该mutableArrayValueForKey:
方法有什么好处?
NSMutableArray *docsProxy = [[DocumentsManager instance] mutableArrayValueForKey:@"documents"];
[[DocumentsManager instance] addObserver:self forKeyPath:@"documents" options:NSKeyValueObservingOptionNew context:NULL];
[[DocumentsManager instance] insertObject:@"aaa" inDocumentsAtIndex:0]; // OK
[docsProxy insertObject:@"bbb" atIndex:0]; // no notification!