日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

KVO本质

發布時間:2025/6/15 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 KVO本质 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

kvo監聽的原理是利用監聽對象的set方法,但是如何才能監聽的到對象內部的set方法呢,如下圖

創建一個Person對象,給他添加觀察者,添加觀察者前它的isa指針指向的是Person類,接下來看添加后

添加觀察者后p對象的類型改變了,被系統替換成了NSKVONotifying_Person,
也就是說,系統創建了一個Person類的子類NSKVONotifying_Person替換原有對象,并在其內部重寫了它的name 的set方法(同時也會調用它的super set方法),在里面添加了監聽,所以每次改變name屬性,即調用set方法都會被監聽到。然后再去通知觀察者

由此可見
被觀察者被系統替換成了子類。系統重寫了相應的set方法實現監聽
同時也需要注意,只有調用了set方法,才能被監聽到,如果是直接改變內部成員變量的值(_name = @""....)則不能被監聽到,因為沒有調用set方法。
?

轉載于:https://my.oschina.net/dahuilang123/blog/796394

總結

以上是生活随笔為你收集整理的KVO本质的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。