底层原理(二)------KVO、KVC

一、KVO

1、KVO的全称是Key-Value-Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变
2、KVO通过Runtime动态生成一个全新的子类NSKVONotifying_MJPerson,然后让instance对象的isa指针指向这个全新的子类

image.png

3、KVO监听对象 重新生成全新的子类内部包括


image.png

4、内部实现Class重写操作,屏蔽内部实现 隐藏了NSKVONotifying_MJPerson类的存在


image.png

5、如何打印类内部的方法名
image.png

6、iOS用什么方式实现对一个对象的KVO(KVO的本质是什么?)
image.png

二、KVC

1、KVC的全称是Key-Value-Coding,俗称“键值编码”,可以通过一个key来访问某个属性

常用的API有
// 设置值
- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath;
- (void)setValue:(nullable id)value forKey:(NSString *)key;
// 获取值
- (nullable id)valueForKeyPath:(NSString *)keyPath;
- (nullable id)valueForKey:(NSString *)key;

2、setValue:forKey:的原理


image.png

3、valueForKey:的原理


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. KVO 一.KVO原理的使用与证明 我们在开发的过程中经常使用KVO和KVC,但是我们并不了解其底层原理和功...
    周灬阅读 861评论 0 9
  • 一. KVO 1. KVO的基本使用 KVO的全称是Key-Value Observing,俗称“键值监听”,可以...
    Imkata阅读 310评论 0 0
  • 上文链接从isa指针看继承关系 KVO 全称Key-Value Observing,俗称"键值监听",可以用于监听...
    Mr丨Yang阅读 1,212评论 0 2
  • KVO的全称是Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变 未使用K...
    鼬殿阅读 468评论 0 1
  • KVC是什么 KVC 全称Key-Value Coding,俗称"键值编码"。它可以通过一个字符串(key)来访问...
    滚滚猫阅读 1,158评论 2 1