码迷,mamicode.com
首页 > 其他好文 > 详细

KVO

时间:2016-04-17 20:44:53      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

作用

监听对象的某个属性,如果发生修改会调用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"];
    }
    
    方法说明:移除监听

KVO

标签:

原文地址:http://www.cnblogs.com/JavaTWW/p/5401977.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!