首先创建一个model类,定义一个name属性,一个age属性
//KVO:key value observer 观察者,观察属性值变化
self.son = [[Person alloc]init];
//KVC赋值
[self.son setValue:@"张三" forKey:@"name"];
self.son.age = @"23";
//添加观察者
//参数1.当前对象self为观察者
//参数2.观察Person的哪个属性值变化
//参数3.设置观察值的类型,是新值还是旧值
//参数4.设置观察内容
[self.son addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:@"观察Person属性name值变化"];
self.label1.text = self.son.name;
self.label2.text = self.son.age;
[self.son addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew context:@"111"];
[self.navigationController.navigationBar addObserver:self forKeyPath:@"barTintColor" options:NSKeyValueObservingOptionNew context:@"111"];
}
//接受响应消息
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"keyPath = %@ object = %@ chang = %@ context = %@",keyPath,object,change,context);
if ([keyPath isEqual:@"name"]) {
self.label1.text = [change objectForKey:@"new"];
}
if ([keyPath isEqual:@"age"]) {
self.label2.text = [change objectForKey:@"new"];
}
}