底層原理(二)------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,但是我們并不了解其底層原理和功...
    周灬閱讀 856評論 0 9
  • 一. KVO 1. KVO的基本使用 KVO的全稱是Key-Value Observing,俗稱“鍵值監聽”,可以...
    Imkata閱讀 308評論 0 0
  • 上文鏈接從isa指針看繼承關系 KVO 全稱Key-Value Observing,俗稱"鍵值監聽",可以用于監聽...
    Mr丨Yang閱讀 1,208評論 0 2
  • KVO的全稱是Key-Value Observing,俗稱“鍵值監聽”,可以用于監聽某個對象屬性值的改變 未使用K...
    鼬殿閱讀 468評論 0 1
  • KVC是什么 KVC 全稱Key-Value Coding,俗稱"鍵值編碼"。它可以通過一個字符串(key)來訪問...
    滾滾貓閱讀 1,152評論 2 1