iOS - KVO

作者: leesen | 来源:发表于2020-04-24 16:33 被阅读0次

    ios用什么方式实现一个对象的kvo?(kvo的本质是什么?)

    1.利用runtime的动态生成一个子类,并且让实例对象的isa指向全新的子类

    2.当修改实例对象的属性时,会调用Foundation的NSSet***ValueAndNotify函数,函数内部调用willChangeValueForKey,然后调用父类原来的setter方法,.然后调用didChangeValueForKey方法.didChangeValueForKey内部触发监听器的observeValueForKeyPath方法

    如何手动触发KVO?

    手动调用下面两个方法

    [self.p1 willChangeValueForKey:@"age"];[self.p1 didChangeValueForKey:@"age"];

    参考:OC底层学习笔记(3)-KVO的实现 - 简书

    相关文章

      网友评论

          本文标题:iOS - KVO

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