6

私は iOS でクラスを実装しており、KVO に準拠するためにDocumentsManager呼び出される多対多のプロパティを作成したいと考えています。documentsそれはほとんど動作しているようで、私の KVO アクセサーとミューテーター メソッドが呼び出されます。しかし、私が気になるのは、私のインスタンスNSMutableArrayを呼び出すことによって返されたプロキシで直接行われた変更がmutableArrayValueForKey:、オブザーバーに通知されないことです。

したがって、このコードは の挿入については通知しますが、 の挿入については通知しませ@"aaa"ん。それは期待される動作ですか?もしそうなら、その方法を使用する利点は何ですか?@"bbb"docsProxymutableArrayValueForKey:

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!
4

1 に答える 1