美文网首页
iOS中KVO的使用

iOS中KVO的使用

作者: JohnayXiao | 来源:发表于2017-08-03 09:01 被阅读8次
    //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]);
        }
    
    

    相关文章

      网友评论

          本文标题:iOS中KVO的使用

          本文链接:https://www.haomeiwen.com/subject/rbmulxtx.html