美文网首页
KVO使用分析

KVO使用分析

作者: ios小喽喽 | 来源:发表于2022-08-31 17:13 被阅读0次

KVO(Key-valueObserve):是OC的一套通知机制,用对象监听该对象的属性改变,不能对于成员变量进行观察,并在改变时接收到事件,是一对一关系,一般继承NSObject的对象都默认支持KVO。

使用:

1、通过[self.car addObserver:self  forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL];方法注册观察者,可以接收到KeyPath属性的变化

2、回调通知观察者属性发生了变化:observeValueForKeyPath:(NSString*)keyPathofObject:(id)objectchange:(NSDictionaryid> *)changecontext:(void*)context

3、当观察者不需要观察时需要“dealloc”方法中删除移除

图(1)

底层原理:

1、KVO 只对属性进行观察,不能对成员变量进行观察,说明KVO观察的是setter方法

2、在addObserver:self forKeyPath: options:context:方法过后生成一个中间类(NSKVONotifying_A),NSKVONotifying_A是A的子类,类的isa指向发生了变化

图(2)

3、中间类的内容:setTitle,class,dealloc,_isKVOA. 如果是继承,需要进行重写setter方法

图(3)

4、在移除观察的时候isa的指向会指回来

相关文章

  • iOS-KVO

    一.kvo使用 kvo可以监听一个对象属性的变化,下面为简单使用. 二.使用runtime分析kvo 我写了个简单...

  • iOS高级进阶之KVO

    KVO的原理 分析原理 使用 手动调用 自己实现KVO NSObject+KVOBlock.h NSObject+...

  • KVO使用分析

    KVO(Key-valueObserve):是OC的一套通知机制,用对象监听该对象的属性改变,不能对于成员变量进行...

  • RxSwift学习(7)KVO知识补充

    网上好多关于OC的KVO介绍。在这里就不详细赘述了。参考KVO原理分析及使用进阶.在RxSwift中使用todoN...

  • KVO 底层本质

    一、KVO 的一个疑惑 二、KVO 的浅层分析 三、KVO 浅层分析验证 四、KVO 子类内部方法 五、手动触发 ...

  • KVO使用及分析

    0x01 用途 键值观察是一种机制: 对于观察的属性为NSObject类型:它允许将其他对象的属性的更改【属性内存...

  • KVO基本使用

    分三部分解释KVO一.KVO基本使用二.KVO原理解析三.自定义实现KVO 一、KVO基本使用 使用KVO,能够非...

  • KVO

    目录 1. KVO的使用1.1 KVO基本使用方法1.2 KVO手动触发模式1.3 KVO属性依赖1.4 KVO容...

  • 如何优雅地使用 KVO

    如何优雅地使用 KVO 如何优雅地使用 KVO

  • iOS底层探索之KVO(五)—FBKVOController分析

    回顾 在前面的几篇博客中,已经介绍了KVO的基本使用,如何自定义 KVO,那么本篇博客将分析一下FBKVOCont...

网友评论

      本文标题:KVO使用分析

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