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);
    }
    
    新鲜出炉的菜鸟一枚,希望大家能互相切磋,互相琢磨,共同进步!
  • 相关阅读:
    iscsi: 多路径
    Paxos算法分析
    ceph实践: 搭建环境
    ocfs2: 搭建环境
    设计模式:Context模式
    Ceph剖析:Leader选举
    Ceph剖析:定时器safetimer的实现
    nfs:环境搭建
    Ceph剖析:数据分布之CRUSH算法与一致性Hash
    Linux命令小结:crontab/netstat/iostat/sar
  • 原文地址:https://www.cnblogs.com/lidaxia/p/4756244.html
Copyright © 2011-2022 走看看