一、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