KVO Options 詳細(xì)介紹

KVO Options 詳細(xì)介紹


Options 影響 方法 observeValueForKeyPath:ofObject:change:context: 中的 change 字典, 選擇不同的 Options , 字典 change的內(nèi)容會(huì)隨著改變


  • NSKeyValueObservingOptionOld : change 中會(huì)包含 key 變化之前的值 old
  • NSKeyValueObservingOptionNew : change 中包含 key 變化之后的值 new
  • NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew: change 中即包含 key 的舊值怔接,也包含新值
  • NSKeyValueObservingOptionInitial : change 中不包含 key 的值,會(huì)在 kvo 注冊(cè)的時(shí)候立即發(fā)送通知。
  • NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew : 注冊(cè)kvo時(shí)立即發(fā)送通知 change 中有 new 值闰蚕,這里的 new 值是注冊(cè)之前 key 的值流译。
  • NSKeyValueObservingOptionPrior : 會(huì)在值發(fā)生改變前發(fā)出一次通知刺覆,當(dāng)然改變后的通知依舊還會(huì)發(fā)出卖怜,也就是每次change都會(huì)有兩個(gè)通知键思。值變化之前發(fā)送通知的 change 中包含一個(gè)鍵值對(duì) NSKeyValueChangeNotificationIsPriorKey:@(1), 值發(fā)生變化之后的的通知 change 不包含上面提到的 鍵值對(duì),可以跟 willChange 手動(dòng)通知搭配使用

除了存在 NSKeyValueObservingOptionInitial 會(huì)在注冊(cè) KVO 時(shí)發(fā)送通知础爬,其他選項(xiàng)都是在 key 發(fā)生變化時(shí)才發(fā)送通知。


下面驗(yàn)證一下上面的結(jié)論

注冊(cè) KVO

KVO_Employees *employees = [[KVO_Employees alloc] init];
employees.salary = @(111);
[employees addObserver:self forKeyPath:@"salary" options:options context:nil];
employees.salary = @(10);
[employees removeObserver:self forKeyPath:@"salary"];

KVO通知響應(yīng)

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
    NSLog(@"change: %@",change);
}

Log 打印如下

-  `NSKeyValueObservingOptionInitial`

     change: {
                kind = 1;
            }

     change: {
                kind = 1;
            }

- `NSKeyValueObservingOptionNew`
    注冊(cè)時(shí) 不發(fā)通知 
     change: {
                kind = 1;
                new = 10;
            }

- `NSKeyValueObservingOptionOld`
    注冊(cè)時(shí) 不發(fā)通知 
     change: {
                kind = 1;
                old = 111;
            }
- `NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld`
    注冊(cè)時(shí)不發(fā)通知
     change: {
                kind = 1;
                new = 10;
                old = 111;
            }
    

- `NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew`
    change: {
                kind = 1;
                new = 111;
            }, 

    change: {
                kind = 1;
                new = 10;
            },


- `NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld`
    change: {
                kind = 1;
                new = 111;
            }

    change: {
                kind = 1;
                new = 10;
                old = 111;
            }
- `NSKeyValueObservingOptionPrior`
    change: {
                kind = 1;
                notificationIsPrior = 1;
            }
    change: {
                kind = 1;
            }               
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吼鳞,一起剝皮案震驚了整個(gè)濱河市看蚜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赔桌,老刑警劉巖供炎,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異疾党,居然都是意外死亡音诫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門雪位,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竭钝,“玉大人,你說我怎么就攤上這事雹洗◎寻保” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵队伟,是天一觀的道長(zhǎng)穴吹。 經(jīng)常有香客問我,道長(zhǎng)嗜侮,這世上最難降的妖魔是什么港令? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮锈颗,結(jié)果婚禮上顷霹,老公的妹妹穿的比我還像新娘。我一直安慰自己击吱,他們只是感情好淋淀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著覆醇,像睡著了一般朵纷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上永脓,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天袍辞,我揣著相機(jī)與錄音,去河邊找鬼常摧。 笑死搅吁,一個(gè)胖子當(dāng)著我的面吹牛威创,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谎懦,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼肚豺,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了界拦?” 一聲冷哼從身側(cè)響起详炬,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寞奸,沒想到半個(gè)月后呛谜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡枪萄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年隐岛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓷翻。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡聚凹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出齐帚,到底是詐尸還是另有隱情妒牙,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布对妄,位于F島的核電站湘今,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏剪菱。R本人自食惡果不足惜摩瞎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孝常。 院中可真熱鬧旗们,春花似錦、人聲如沸构灸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)喜颁。三九已至稠氮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間洛巢,已是汗流浹背括袒。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稿茉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像漓库,于是被迫代替她去往敵國(guó)和親恃慧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355