KVO

什么是KVO?

key - value -observing
是一種觀察者設計模式
系統(tǒng)采用 isa (isa-swizzling)混寫來實現(xiàn)KVO

KVO實現(xiàn)流程是什么?

屏幕快照 2018-11-14 下午5.19.44.png

系統(tǒng) NSKVONotifying_A 的setter實現(xiàn)

屏幕快照 2018-11-14 下午5.25.46.png

通過 KVC 設置新value的時候會觸發(fā) KVO
是因為KVC調用了類的setter方法
直接改變成員變量的值卻不會觸發(fā),需要手動添加 willChangeValueForKey 觸發(fā)KVO

    //直接為成員變量賦值
   [self willChangeValueForKey:@"value"];
    _value += 1;
   [self didChangeValueForKey:@"value"];

總結:

使用setter方法改變值 KVO會生效
使用 setvalue forkey 改變值 KVO會生效
成員變量直接修改 需要手動添加KVO才會修改

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • KVC KVC定義 KVC(Key-value coding)鍵值編碼,就是指iOS的開發(fā)中,可以允許開發(fā)者通過K...
    暮年古稀ZC閱讀 2,288評論 2 9
  • KVC KVC定義 KVC(Key-value coding)鍵值編碼,就是指iOS的開發(fā)中,可以允許開發(fā)者通過K...
    jackyshan閱讀 52,308評論 9 198
  • KVO原理 KVO是基于runtime機制實現(xiàn)的當某個類的屬性對象第一次被觀察時,系統(tǒng)就會在運行期動態(tài)地創(chuàng)建該類的...
    Maj_sunshine閱讀 599評論 0 0
  • KVO: KVO的全稱是Key-Value Observing,俗稱“鍵值監(jiān)聽”,可以用于監(jiān)聽某個對象屬性值的改變...
    曹來東閱讀 693評論 0 0
  • KVC/KVO 概念 KVC : 即 Key-Value-Coding,用于鍵值編碼。作為 cocoa 的一個標準...
    滿臉胡茬的小碼農閱讀 2,083評論 2 8

友情鏈接更多精彩內容