一個類具有類型為NSMutableArray的屬性(和實例變量),使用經過合成的訪問器(通過 @property code>)。 如果您使用以下方法觀察此數組:
[myObj addObserver:self forKeyPath:@"theArray" options:0 context:NULL];
然后像下面这样在数组中插入一个对象:
[myObj.theArray addObject:NSString.string];
一个observeValueForKeyPath...通知没有被发送。 然而,以下操作会发送正确的通知:
[[myObj mutableArrayValueForKey:@"theArray"] addObject:NSString.string];
这是因为mutableArrayValueForKey
返回一个代理对象,负责通知观察者。
但是合成的访问器不应自动返回这样的代理对象吗?解决此问题的正确方法是什么-我应该编写一个自定义访问器,只需调用 [super mutableArrayValueForKey ...]
?