【发布时间】:2013-06-05 03:37:54
【问题描述】:
我已经阅读了很多关于 KVO 的文档,但我仍然对何时使用它感到困惑。
如果objA想监控objB的某个属性,像这样:
self.objB = [[ObjB alloc] init];
[self.objB addObserver:self
forKeyPath:@"address"
options:0
context:nil];
所以如果objB的属性发生变化,而只能由self改变,为什么不干脆这样做:
self.objB.property = @"newValue";
[self doSomethingBasedOnNewValueOfObjBnewProperty];
而不是
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if(keyPath == @"address") {
[self doSomethingBasedOnNewValueOfObjBnewProperty];
}
}
与单例一起使用时可能很有用,例如self.objB = [ObjB sharedInstance],其中属性可能会被其他对象更改。这是唯一的用例吗?
【问题讨论】:
标签: objective-c key-value-observing