#1. 实例化一个类
Person *person = [[Person alloc] init];
person.age =11;
#2. 开始监听
[person addObserver:selfforKeyPath:@"age"options:NSKeyValueObservingOptionNewcontext:nil];
#3. 值改变时(age = 111),监听执行的方法
-(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void*)context{
NSLog(@"person 的值变了:%d",_person.age);
}
核心步骤:
1,生成一个Person类的派生类Person_KVO
2,使用当前对象的isa指向新的派生类,就会调用派生类的set方法
3.重写Person_KVO的setAge方法,在set方法中拿到观察者(使用运行时关联观察者这个属性)
4,每次重写setAge方法,都调用观察者的ml_observeValueForKeyPath方法。实现时刻监听。