【发布时间】:2009-10-22 22:44:13
【问题描述】:
我想监视一个 NSCountedSet 以查看其内容是否发生变化。设置 KVO 似乎可以编译,但没有被触发。第一个问题:你能观察一组吗?如果是这样,那么此消息是否有问题?
[subViewA addObserver:subViewB forKeyPath:@"countedSet" options:0 context:NULL];
如果有帮助,我真的只是想监控集合中的(对象数量)的 count。
编辑 - 这是观察者(subViewB):
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if ([keyPath isEqual:@"countedSet"]) {
NSLog(@"Set has changed");
}
}
Edit2 - 将 addObserver 消息从 subView 移动到 viewController。所以我试图让一个 subView 观察另一个 viewController 的 subViews 中的 NSCountedSet。关键路径是“相对于接收者”——我假设它是 subViewA。
【问题讨论】:
-
你是如何改变设置的?你在使用符合 KVO 的访问器吗?
-
countedSet 声明为属性(非原子,保留)并正确合成。我正在使用 [myCountedSet addObject:newObject] (及其反向 removeObject:) 来修改集合。也许我需要一个 countOfCountedSet 方法?
标签: cocoa cocoa-touch key-value-observing