美文网首页
iOS KVO原理

iOS KVO原理

作者: zhongli_007 | 来源:发表于2019-07-09 09:43 被阅读0次

1. 在添加监听后   [publishObj addObserver:receiveObj   forKeyPath:@"userName" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil];

利用RuntimeAPI会动态生成一个子类假设原来的类名是 Person,那么新生成的子类是 NSKVONotifying_Person。并且让这个instance对象的isa指向这个子类。

我们遍历这个子类的属性以及方法可以看到如下结果:

可以看到新的子类没有新添加的属性,只有方法。最明显的一个方法是重写了setUserName: 这个方法。那我们就有理由怀疑发布实际上是在这个方法里实现的。通过手动调用KVO,我们得出结论确实如此。实际上是通过:

    [self willChangeValueForKey:@"userName"];

    [self didChangeValueForKey:@"userName"];

来实现的。

综上所述:KVO在调用的时候,实际上生成了NSKVONotifying_Person的新类,实例的isa指针指向这个新类。该类的父类实际上还是Person,新类重写了四个方法,监听是通过setter方法来实现的,这点可以通过手动调用KVO来证实,最后回调结果。

相关文章

  • iOS - KVO

    [toc] 参考 KVO KVC 【 iOS--KVO的实现原理与具体应用 】 【 IOS-详解KVO底层实现 】...

  • Objective-C的本质(4)—— KVO本质

    参考:iOS底层原理总结 - 探寻KVO本质iOS-KVO本质 问题一:kvo如果找到对应的属性 KVO不存在查找...

  • iOS原理(二)----KVO,KVC

    iOS原理(二)----KVO,KVC KVO KVO的全称是Key-Value Observing,俗称“键值监...

  • IOS KVO原理解析与应用

    IOS KVO原理解析与应用 一、KVO概述 KVO,即:Key-Value Observing,是Objecti...

  • IOS底层(三) KVO底层实现原理

    @[TOC](IOS底层(三) KVO底层实现原理 ) 一,KVO简述 KVO的全称 Key-Value Obse...

  • iOS KVO 基础与底层原理

    iOS KVO 基础与底层原理 KVO基础 KVO是通过给对象object的属性property注册observe...

  • iOS-底层原理21-KVO(下)

    iOS-底层原理21-KVO(下) 《iOS底层原理文章汇总》[https://www.jianshu.com/p...

  • 自定义KVO

    导语: 如果对KVO原理不是很熟悉的,可以参考下简书另一篇文章《ios KVO原理探究》,主要是通过模拟KVO底层...

  • KVC

    KVC原理剖析 - CocoaChina_让移动开发更简单 iOS开发底层细究:KVC和KVO底层原理 | iOS...

  • 底层原理

    iOS底层原理总结 - Category的本质 KVO详解及底层实现青少年一定要读的KVO指南 iOS 底层解析w...

网友评论

      本文标题:iOS KVO原理

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