OC语法 KVO

作者: 啊俊吖 | 来源:发表于2019-07-04 19:46 被阅读0次
  • Key-Value-Observe 键指针监听

用于监听某个属性值的改变。是基于KVC(Key-Value-Coding 键值编码)实现的.

  • 实现原理

在为实例对象添加观察者后,系统内部会新建一个名为 NSKVONotifying_类名 的类继承原实例对象的父类,并将原实例对象的isa指针指向 NSKVONotifying_类名 类,并为NSKVONotifying_类名 添加以下方法
1.set[属性名]:方法, 在原实例对象调用set[属性名]:方法时,会通过isa指针,寻找到NSKVONotifying_类名set[属性名]:方法并调用。
2.class:方法 在实例对象调用时返回原实例对象的类名,欺骗。
3.delloc:方法 在移除监听做处理。
4._isKVOA:方法 判断是不是KVO。的类

  • set[属性名]:方法

在原实例对象调用set[属性名]:方法时,会通过isa指针,寻找到NSKVONotifying_类名set[属性名]:方法并调用。NSKVONotifying_类名set[属性名]:方法内部会调用_NSSet[值得类型]ValueAndNotify方法,

_NSSet[值得类型]ValueAndNotify`方法 值

_NSSet[值得类型]ValueAndNotify方法 的内部实现

[self willChangeValueForKey:@""];
//原来的setter的实现
[self didChangeValueForKey:@""];

didChangeValueForKey:内部会调用obeseverValueForKeyPath:ofObject:change:context:方法 通知外部调用完成

可以得知,KVO依赖于set[属性名]:方法 ,set[属性名]:方法 又依赖于 KVC

相关文章

  • OC语法 KVO

    Key-Value-Observe 键指针监听 用于监听某个属性值的改变。是基于KVC(Key-Value-Cod...

  • OC语法(KVO)

    KVO的全称是Key-Value Observing,即"键值监听",可以用于监听某个对象属性值得改变。 F、题:...

  • OC语法:KVO的底层实现

    一、KVO是什么二、怎么使用KVO三、KVO的底层实现四、KVO常见面试题 一、KVO是什么 KVO全称Key-V...

  • swift中KVO和属性观察器

    开篇提醒:OC中的KVO及其KVO的基础知识可参见:深入runtime探究KVO Swift中,原本没有KVO模式...

  • iOS KVO的底层实现原理

    KVO 是 OC 观察者设计模式的一种KVO 的实现依赖于 OC 强大的 RuntimeKVO是Cocoa提供的...

  • KVO

    今天和大家讨论一下OC中KVO(KeyValueObserving)键值观察 KVO定义 KVO是iOS开发中的一...

  • OC的KVO学习记录(2)

    仿写KVO的实现KVO原理参考可前一篇OC的KVO学习记录代码github地址:Sameny仿写KVO 注:关键代...

  • (一)OC语法02(KVO与KVC)

    1、KVO KVO的作用是监听对象的属性的改变。重点之一就是必须是触发了属性的setter方法才会触发KVO,只是...

  • OC KVO

    1. KVO 是什么? KVO是OC观察者模式的一种实现(另一种是NSNotification[https://w...

  • iOS知识点小结

    1.KVO1.1> KVO 简介:KVO 是 OC 观察者设计模式的一种实现.KVO 指定一个被观察的对象的属性,...

网友评论

    本文标题:OC语法 KVO

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