Я прочитал много документов о 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];
}
}
Это может быть полезно при использовании с singleton, например self.objB = [ObjB sharedInstance], где свойства могут быть изменены другими объектами. Это единственный вариант использования?