美文网首页iOS软件重构与设计模式iOS简友广场
iOS知识复习(5)--- KVO和KVC相关

iOS知识复习(5)--- KVO和KVC相关

作者: 焦下客 | 来源:发表于2023-01-12 00:09 被阅读0次

一、KVO

kvo 当一个对象使用了kvo监听,iOS系统会修改这个对象的isa指针, 改为指向一个全新的通过Runtime动态创建继承该类的子类,子类拥有自己的set方法实现, set方法实现内部会顺序调用willChangeValueForKey方法、原来的setter方法实现、 didChangeValueForKey方法,而didChangeValueForKey方法内部 又会调用监听器的observeValueForKeyPath:ofObject:change:context:监听方法

被监听的属性的值被修改时,就会自动触发KVO。 如果想要手动触发KVO,则需要我们自己调用willChangeValueForKey和 didChangeValueForKey方法即可在不改变属性值的情况下手动触发KVO ,并且这两个方法缺一不可。

子类一旦创建就会存储在内存中,但是之类实例对象是可以释放的,类是否存在和某个实例对象是否销毁是两个概念

子类中有几个方法记录:

1.isKVO 判断是否是KVO状态

2.class 还是指向原来的类,让外界无感知

3.dealloc 先释放子类在释放父类

4.setter 实际是调用子类setter方法进行消息发送

二、kvc

kvc是一种NSKeyValueCoding隐式协议所提供的机制。在iOS13之前可以通过KVC获取设置系统的私有属性,iOS13之后被禁用了。

kvc赋值过程如下图: kvc赋值过程.png kvc取值过程如下图: kvc取值过程.png

相关文章

  • iOS知识复习(5)--- KVO和KVC相关

    一、KVO kvo 当一个对象使用了kvo监听,iOS系统会修改这个对象的isa指针, 改为指向一个全新的通过R...

  • KVC 和 KVO

    iOS-KVC和KVO精炼讲解(干货)KVC 和 KVOiOS开发系列--Objective-C之KVC、KVO细...

  • KVC剖析与使用

    KVC与KVO相关面试题 KVC -- Key Value Coding(键值编码) 在iOS开发过程中,允许开发...

  • iOS知识体系总结-KVO&KVC

    注意:更新内容会同步到GitHub iOSWiki-知识体系总结 总结-KVO&KVC iOS知识点/KVO&KV...

  • 无标题文章

    ios中的 kvc和kvo的区别 KVC编程时setValue(value: AnyObje...

  • 知识点3

    26. 什么是KVC和KVO? KVO: iOS开发-KVO的奥秘 http://www.jianshu.com/...

  • KVC

    iOS 如何使用KVC iOS开发UI篇—Kvc简单介绍 iOS开发系列--Objective-C之KVC、KVO

  • KVC

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

  • iOS面试 - 收藏集 - 掘金

    KVC 与 KVO 拾遗补缺 - iOS - 掘金KVC 和 KVO 是 Cocoa 框架提供的一个非常强的特性,...

  • iOS - KVO

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

网友评论

    本文标题:iOS知识复习(5)--- KVO和KVC相关

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