类具有 NSMutableArray 类型的属性(和实例 var) ,其中包含合成访问器(通过 @property
)。如果使用以下方法观察该数组:
[myObj addObserver:self forKeyPath:@"theArray" options:0 context:NULL];
然后像这样在数组中插入一个对象:
[myObj.theArray addObject:NSString.string];
观察到的 ValueForKeyPath... 通知是 没有发送的:
[[myObj mutableArrayValueForKey:@"theArray"] addObject:NSString.string];
这是因为 mutableArrayValueForKey
返回一个代理对象,该对象负责通知观察者。
但是合成的访问器不应该自动返回这样一个代理对象吗?解决这个问题的正确方法是什么——我是否应该编写一个只调用 [super mutableArrayValueForKey...]
的自定义访问器?