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