kvo除了能觀察屬性外,能不能觀察對(duì)象

不能觀察對(duì)象

KVO,即:Key-Value Observing,它提供一種機(jī)制,當(dāng)指定的對(duì)象的屬性被修改后,則對(duì)象就會(huì)接受到通知。簡(jiǎn)單的說(shuō)就是每次指定的被觀察的對(duì)象的屬性被修改后,KVO就會(huì)自動(dòng)通知相應(yīng)的觀察者了

KVO是一個(gè)對(duì)象能夠觀察另外一個(gè)對(duì)象的屬性的值,并且能夠發(fā)現(xiàn)值的變化。這是一個(gè)對(duì)象與另外一個(gè)對(duì)象保持同步的一種方法,即當(dāng)另外一種對(duì)象的狀態(tài)發(fā)生改變時(shí),觀察對(duì)象馬上作出反應(yīng)。它只能用來(lái)對(duì)屬性作出反應(yīng),而不會(huì)用來(lái)對(duì)方法或者動(dòng)作作出反應(yīng)。

實(shí)現(xiàn)原理:當(dāng)為某一個(gè)對(duì)象屬性注冊(cè)監(jiān)聽(tīng)的時(shí)候,該對(duì)象的isa指針就會(huì)指向一個(gè)中間類(lèi),而不是本來(lái)對(duì)象真實(shí)的類(lèi)。所以說(shuō),對(duì)象的isa指針可以改變,我們的程序最好不要依賴isa指針。

簡(jiǎn)而言之就是:

1、當(dāng)一個(gè)object有觀察者時(shí),動(dòng)態(tài)創(chuàng)建這個(gè)object的類(lèi)的子類(lèi)

2、對(duì)于每個(gè)被觀察的property,重寫(xiě)其set方法

3、在重寫(xiě)的set方法中調(diào)用- willChangeValueForKey:和- didChangeValueForKey:通知觀察者

4、當(dāng)一個(gè)property沒(méi)有觀察者時(shí),刪除重寫(xiě)的方法

5、當(dāng)沒(méi)有observer觀察任何一個(gè)property時(shí),刪除動(dòng)態(tài)創(chuàng)建的子類(lèi)

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

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,083評(píng)論 0 9
  • 上半年有段時(shí)間做了一個(gè)項(xiàng)目,項(xiàng)目中聊天界面用到了音頻播放,涉及到進(jìn)度條,當(dāng)時(shí)做android時(shí)候處理的不太好,由于...
    DaZenD閱讀 3,106評(píng)論 0 26
  • [深入淺出Cocoa]詳解鍵值觀察(KVO)及其實(shí)現(xiàn)機(jī)理羅朝輝 (http://www.cppblog.com/k...
    Crazy2015閱讀 761評(píng)論 0 1
  • 有人曾說(shuō)說(shuō)過(guò):年輕是一種罪過(guò)。 一位青年,彷徨著追尋著自以生活的生活。青年向往著自由的戶外,世俗條規(guī)卻時(shí)刻框著他。...
    漏風(fēng)獨(dú)雨閱讀 268評(píng)論 0 1
  • 樂(lè)園-與非門(mén) 我不知道寫(xiě)什么,但又想寫(xiě)些什么。不過(guò)必須得承認(rèn),其實(shí)是因?yàn)槠渌裁词露疾幌胱觥?也不想去跑步,因?yàn)橥?..
    cornsweet閱讀 245評(píng)論 0 0

友情鏈接更多精彩內(nèi)容