KVO

什么是KVO贰谣?

KVO是觀察者模式娜搂,當(dāng)一個被觀察者對象屬性發(fā)生改變時迁霎,觀察者會收到通知。

有利于兩個類之間的解耦百宇。

KVO的實現(xiàn)原理

KVO基于運(yùn)行時原理考廉。

當(dāng)監(jiān)聽對象的屬性時,會為被監(jiān)聽對象的類創(chuàng)建一個派生類NSKVONotifying_Class并且重寫屬性的setter方法携御,會在setter方法之前和之后通知被監(jiān)聽對象的屬性值更改情況昌粤。在這個過程中指向原來對象的isa指針會指向新創(chuàng)建的子類。

每個對象都有isa指針啄刹,它指向該對象所屬的類涮坐。

setter內(nèi)的實現(xiàn)

willChangeValueForKey:在屬性改變之前調(diào)用;

didChangeValueForKey:在屬性改變之后調(diào)用誓军;

observeValueForKey:ofObject:change:context: 最后也會被調(diào)用

KVO觸發(fā)條件

是否執(zhí)行了setter方法袱讹,是否使用了kvc賦值。

KVO使用

1谭企、注冊監(jiān)聽者,實施監(jiān)聽

params:

object:被監(jiān)聽對象

observe:監(jiān)聽對象

keyPath:被監(jiān)聽屬性

options:

...new:監(jiān)聽方法中獲取新值评肆。

...old: 監(jiān)聽方法中獲取舊值债查。

...initail:監(jiān)聽方法中獲取初始化值

...prior:屬性改變前后的值都會傳到監(jiān)聽方法

2、實現(xiàn)監(jiān)聽方法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓜挽,一起剝皮案震驚了整個濱河市盹廷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌久橙,老刑警劉巖俄占,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異淆衷,居然都是意外死亡缸榄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門祝拯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甚带,“玉大人,你說我怎么就攤上這事佳头∮ス螅” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵康嘉,是天一觀的道長碉输。 經(jīng)常有香客問我,道長亭珍,這世上最難降的妖魔是什么敷钾? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任枝哄,我火速辦了婚禮,結(jié)果婚禮上闰非,老公的妹妹穿的比我還像新娘膘格。我一直安慰自己,他們只是感情好财松,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布瘪贱。 她就那樣靜靜地躺著,像睡著了一般辆毡。 火紅的嫁衣襯著肌膚如雪菜秦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天舶掖,我揣著相機(jī)與錄音球昨,去河邊找鬼。 笑死眨攘,一個胖子當(dāng)著我的面吹牛主慰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鲫售,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼共螺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了情竹?” 一聲冷哼從身側(cè)響起藐不,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秦效,沒想到半個月后雏蛮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡阱州,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年挑秉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苔货。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡衷模,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒲赂,到底是詐尸還是另有隱情阱冶,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布滥嘴,位于F島的核電站木蹬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜镊叁,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一尘颓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晦譬,春花似錦疤苹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至像樊,卻和暖如春尤莺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背生棍。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工颤霎, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涂滴。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓友酱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親柔纵。 傳聞我的和親對象是個殘疾皇子缔杉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 上半年有段時間做了一個項目,項目中聊天界面用到了音頻播放首量,涉及到進(jìn)度條壮吩,當(dāng)時做android時候處理的不太好进苍,由于...
    DaZenD閱讀 3,017評論 0 26
  • KVO概述 鍵值觀察Key-Value-Observer就是觀察者模式加缘。 觀察者模式的定義:一個目標(biāo)對象管理所有依...
    小希嘻閱讀 624評論 0 0
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 29,385評論 8 265
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,101評論 1 32
  • KVO原理淺析 KVO,即Key-Value Observing觉啊,官方文檔中的介紹是 Key-value obse...
    wilsonhan閱讀 1,709評論 1 7