我正在iOS中实现一个名为
因此,这段代码会通知我插入
DocumentsManager
的类,并希望创建一个to-many属性documents
,使其符合KVO规范。它似乎主要工作正常,我的KVO访问器和修改器方法也被调用。然而,令我困扰的是,在直接对由调用我的实例的mutableArrayValueForKey:
返回的NSMutableArray
代理进行更改时,不会通知观察者。因此,这段代码会通知我插入
@"aaa"
,但不会通知插入@"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!