#import
#import "Teacher.h"
@interface Person : NSObject
@property(nonatomic,copy)NSString * name;
@property(nonatomic,retain)Teacher *teacher;
#import
@interface Teacher : NSObject
@property(nonatomic,copy)NSString *name;
//KVO:key - Value -Observer键值观察者。KVO是一种机制,不是设计模式,是基于观察者设计模式的一种机制。一个对象主动添加另一个对象为观察者,让观察者观察自己的属性有没有发生变化,如果发生了变化,观察者就会调用特定的方法
// KVO的使用步骤:
// 1. 注册观察者
person.name= @"zz";
// 下面方法的参数含义:
//obserVer:观察者
// keyPath:观察哪一个属性
// options:观察属性的什么状态,新值旧值还是初始值等
// context:上下文,传值
[person addObserver:self forKeyPath:@"teacher.name" options:(NSKeyValueObservingOptionOld |NSKeyValueObservingOptionNew) context:@"hh"];
person.teacher.name = @"xx";
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
self.window =[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
Person* person = [[Personalloc]init];
Teacher* teacher = [[Teacher alloc]init];
person.teacher= teacher;
//KVO:key - Value -Observer键值观察者。KVO是一种机制,不是设计模式,是基于观察者设计模式的一种机制。一个对象主动添加另一个对象为观察者,让观察者观察自己的属性有没有发生变化,如果发生了变化,观察者就会调用特定的方法
// KVO的使用步骤:
// 1. 注册观察者
person.name= @"zz";
// 下面方法的参数含义:
//obserVer:观察者
// keyPath:观察哪一个属性
// options:观察属性的什么状态,新值旧值还是初始值等
// context:上下文,传值
[person addObserver:self forKeyPath:@"teacher.name" options:(NSKeyValueObservingOptionOld |NSKeyValueObservingOptionNew) context:@"hh"];
person.teacher.name = @"xx";
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
returnYES;
}
//实现方法
- (void)observeValueForKeyPath:(NSString *)keyPathofObject:(id)objectchange:(NSDictionary *)change context:(void*)context
{
// if (context == @"name") {
// }
}