美文网首页
第二十三篇:KVC和KVO实现的原理

第二十三篇:KVC和KVO实现的原理

作者: 坚持才会看到希望 | 来源:发表于2022-11-26 21:49 被阅读0次

KVC被用来进行赋值操作,下面是KVC的官方文档介绍:


8711669515793_.pic.jpg

下面这些代码是KVC进行赋值时候,其会找set方法,然后进行赋值操作,


8721669517904_.pic.jpg 8731669517919_.pic.jpg

如果没有set方法,其就会找_set方法,如下:


8741669518179_.pic.jpg

如果没有set方法和set方法,其就会按顺序查找<key>,_is<key>,<key>或is<key>的实例变量。需要添加accessInstanceVariablesDirectly返回YES。

8771669518746_.pic.jpg 8761669518699_.pic.jpg

当上面方法都没有的时候,其会调用如下图方法:

8781669518904_.pic.jpg

KVC的取值过程

下面是官方文档的介绍:


8801669521029_.pic.jpg

KVO的实现 (需要移除KVO监听)

kvo是基于kvc的实现的,下面是常用的KVO代码,先通过添加监听,然后进行赋值,然后就会调用observeValueForKeyPath方法。

8821669523202_.pic.jpg

下面是dealloc方法,这个方法,其实这里移除监听在new方法创建的时候可以写和不写的,因为其内部会将其释放掉。如果这个是用单例方法创建的时候,将会闪退,这个是因为单例是存在静态区域的,这个地方是不会释放的,当添加监听的时候控制器已经释放了,这样就导致找不到对应的控制器,所以会闪退,所以需要添加移除监听的方法。


8841669523934_.pic.jpg 8831669523425_.pic.jpg

KVO可以手动关闭和触发吗

是可以的,通过重写这个方法,在其里面设置NO就会关闭

8851669524917_.pic.jpg

下面这个是手动触发KVO


8861669529859_.pic.jpg

KVO的原理

当我们添加addObserver监听的时候,其会动态产生一个NSKVONotifying_LGPerson的名,其是一个临时的帮助我们实现某个功能的,


8871669530212_.pic.jpg

遍历NSKVONotifying_LGPerson后其内部有个set方法。


8881669531178_.pic.jpg

然后其会调用willchangevalueforkey和didchangevalueforkey这些方法。键值的改变其也是用的kvc。

在用KVO时候有个好的框架,FBKVO这个,它可以不用进行手动remove,解决回调函数代码很多等。

自定义KVO,及KVO的流程核心代码

8901669550481_.pic.jpg

相关文章

  • 常见面试题--KVC和KVO

    1、KVO实现原理 2、KVC原理

  • 面试题

    1.简述KVC和KVO,其中KVO实现原理? KVC : 键值编码(Key-Value Coding),它是一种通...

  • iOS面试题(4) KVO KVC

    声明,不是原创,笔记均来自 群主大神~ 手动实现KVO 什么是KVO和KVC? KVO内部实现原理 NSNotif...

  • KVC,KVO

    KVC , KVO KVC和KVO的区别及应用 KVC/KVO原理 1. KVC键值编码 KVC,即是指NSKey...

  • iOS - KVO

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

  • 可能碰到的iOS笔试面试题(7)--KVO-KVC

    KVC-KVO KVC的底层实现? KVO的底层实现? 什么是KVO和KVC? KVO的缺陷? KVO是一个对象能...

  • ios基础——KVO、KVC

    KVO和KVC常见问题: 1.KVC和KVO是什么.2.KVC和KVO的原理是什么3.KVC和KVO的使用场景4....

  • 说一下KVC和KVO

    本篇采用简单的例子,来介绍 iOS 中的 KVC 和 KVO 的用法和实现原理。 一、KVC 1. KVC是什么 ...

  • 底层原理探究(一)KVO

    问题:1、KVO的使用?实现原理?(为什么要创建子类来实现)2、KVC的使用?实现原理?(KVC拿到key以后,是...

  • Swift KVO和KVC底层实现原理

    Swift KVO和KVC底层实现原理 demo 地址:https://gitee.com/johnson__sa...

网友评论

      本文标题:第二十三篇:KVC和KVO实现的原理

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