KVO使用

来源:互联网 发布:苹果网络不可用 编辑:程序博客网 时间:2024/05/16 06:30
//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]);    }
0 0