美文网首页
也来说下常用的KVO

也来说下常用的KVO

作者: Chivalrous | 来源:发表于2016-08-06 19:49 被阅读21次

    KVO(Key-Value Observing)模式又可以称之为观察者模式,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。

    IOS中KVO的使用方法

    IOS框架中是支持KVO的,用户只需要使用官方提供的API就可以直接实现对应的功能。

      1. 注册观察者,实施监听;
      1. 在回调方法中处理属性发生的变化;
      1. 移除观察者;

    也就是注册——>通知——>撤销注册的过程。

    KVO的工作原理

    在官方文档中对KVO的介绍是一笔带过的,并没有什么有用的信息,于是我试着使用最简单的方式看了下KVO的实现过程,下面上代码。

    //我们实例化一个对象
    self.person = [Person new];
    //给这个对象的成员变量赋值
    self.person.age = 18;
    //这里打印下该对象的isa指向 
    NSLog(@"isa:%@",[self.person valueForKeyPath:@"isa"]);
    //然后我们将该对象注册成为观察者
    [self.person addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew context:nil];
    //再次打印该对象的isa指向
    NSLog(@"isa:%@",[self.person valueForKeyPath:@"isa"]);
    

    通过上面的代码我们可以看到输出结果已经变成了‘SKVONotifying_Person’这个类,由此来看,KVO的原理应该是在一个原有类的基础上,由系统自动生成一个该类的分类,并在分类中重写成员变量的setter方法,当setter方法被调用发出对应的通知。

    事后我又在网上看了些相关的文章,其中简书作者啊左~的一篇文章很是受用,如果各位有兴趣更深入的研究可以点这条链接继续观看。
    KVO的实现原理与具体应用- by:啊左~

    相关文章

      网友评论

          本文标题:也来说下常用的KVO

          本文链接:https://www.haomeiwen.com/subject/vqnksttx.html