KVO

作用

监听对象的某个属性,如果发生修改会调用observeValueForKeyPath方法

使用步骤

  • 增加监听器

      self.shop=[[Shop alloc]init];
    
      [self.shop addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew| NSKeyValueObservingOptionOld  | NSKeyValueObservingOptionPrior | NSKeyValueObservingOptionInitial context:@"ttt"];
    

    代码解释与说明: 使用self监听shop对象的name属性
    options的四个参数:
    NSKeyValueObservingOptionInitial(记录初始值)无论name属性是否发生修改都会调用监听方法
    其他的属性都是调用shop的name的set方法才会调用监听方法

  • 实现监听方法

    -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
    {
      NSLog(@"监听%@对象的%@属性",[object class],keyPath);
      NSLog(@"%@%@",change,context);
    }
    

    方法说明:
    该方法在object里面声明,任何对象都可实现

  • 程序结束移除,不再监听
    -(void)dealloc
    {
      [self.shop removeObserver:self forKeyPath:@"name"];
    }
    
    方法说明:移除监听
posted @ 2016-04-17 20:01  爱上咖啡的唐  阅读(180)  评论(0编辑  收藏  举报