//1.创建观察者对象;创建被观察者对象
TRBank *bank = [TRBank new];
//2.使用KVC方式给被观察者对象设置余额
[bank setValue:@1000.5 forKey:@"accountBalance"];
//3.被观察者调用addObserver方法,添加观察动作
/* 参数一:指定观察对象的属性名字(属性路径)
参数二:给定观察的枚举值(接收到通知的时候,获取新值/老值/初始值)
描述:注册一个观察者对象Register
NSKeyValueObservingOptionInitial:当给定余额初始值的时候,自动发送通知
*/
[bank addObserver:bank forKeyPath:@"accountBalance" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionInitial) context:nil];
//4.需要使用KVC指定变化的值
[bank setValue:@2000 forKey:@"accountBalance"];
//
// //移除观察者(在观察者对象和被观察者对象释放之前,移除观察者对象)
[bank removeObserver:bank forKeyPath:@"accountBalance"];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if([keyPath isEqualToString:@"accountBalance"]) {
NSLog(@"%@ %@",[change valueForKey:NSKeyValueChangeNewKey],[change valueForKey:NSKeyValueChangeOldKey]);
}