KVO简单介绍及用法

KVO:key value observing 键值观察

  • 实际上就是三个方法:
  • 1.给对象添加监听就
  • 2.删除监听器
  • 3.监听后调用的方法

(void *) 相当于id == NSObject ==任何对象

DXPerson *p = [[DXPerson alloc] init];

p.name = @"jack";
  • 从这一行开始监听p对象name属性值的变化,也就是说必须是这行代码之后属性值发生改变才能监听到
     / **  addObserver:监听者(观察者)

     *  forKeyPath:被监听者对象的属性

     *  options:NSKeyValueObservingOptionOld  |  NSKeyValueObservingOptionNew

     *  context:参数

     */

    [p addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionOld |NSKeyValueObservingOptionNew context:@"test"];

     p.name = @"rose”;
  • 当被监听的对象销毁时候,监听器必须要移除监听器,否则报错(因为被监听者已经销毁,但是监听器任然在监听这个销毁的对象)

    [p removeObserver:self forKeyPath:@"name”];

/**
 *  当监听器发现被监听者的属性值发生改变的时候,系统就会自动调用这个方法
 *  @param keyPath 被监听者对象的属性名称
 *  @param object  哪个对象的属性被改了
 *  @param change  改成什么样了
 *  @param context 监听器传来的参数
 */
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSLog(@"%@,--%@---%@--%@",keyPath,object,change,context);
}
posted @ 2015-08-24 23:29  东邪喜毒  阅读(174)  评论(1编辑  收藏  举报