zoukankan      html  css  js  c++  java
  • 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);
    }
    
    新鲜出炉的菜鸟一枚,希望大家能互相切磋,互相琢磨,共同进步!
  • 相关阅读:
    HDU 5835 Danganronpa(弹丸论破)
    HDU 5813 Elegant Construction(优雅建造)
    HDU 5831 Rikka with Parenthesis II(六花与括号II)
    HDU 5810 Balls and Boxes(盒子与球)
    HDU 5818 Joint Stacks(联合栈)
    Dream Team(最小生成树)
    带权并查集
    HDU 1495 非常可乐(BFS)
    I Hate It(线段树+更新)
    Just a Hook(线段树+区间更新)
  • 原文地址:https://www.cnblogs.com/lidaxia/p/4756244.html
Copyright © 2011-2022 走看看