【发布时间】:2010-09-23 01:47:49
【问题描述】:
一个类有一个 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...] 的自定义访问器吗?
【问题讨论】:
标签: cocoa key-value-observing key-value-coding