在開發(fā)過程中,經(jīng)常會(huì)對(duì)某一個(gè)值進(jìn)行特定的處理,比如一個(gè)按鈕是否被選中等等。這時(shí)候就會(huì)用到KVO。所謂KVO簡單來講,就是給需要被觀察的對(duì)象添加一個(gè)觀察者,當(dāng)被觀察對(duì)象的某個(gè)屬性發(fā)生改變時(shí),立馬通知觀察者執(zhí)行相關(guān)操作的一種機(jī)制。
我們來看一個(gè)例子:加入我們要監(jiān)聽一個(gè)人的年齡變化,通常做法如下:


通過以上5步操作,在我們點(diǎn)擊屏幕時(shí),就會(huì)在- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void*)context方法中得到如下結(jié)果:

當(dāng)我們離開頁面時(shí),在dealloc方法中移除監(jiān)聽對(duì)象就可以了。
簡單總結(jié)如下:
? ? 1、創(chuàng)建對(duì)象;
? ? 2、添加觀察者,觀察需要監(jiān)聽的對(duì)象屬性值;
? ? 3、當(dāng)屬性值發(fā)生改變時(shí),在- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary?*)change context:(void*)context方法中做處理;
? ? 4、離開頁面時(shí),移除監(jiān)聽者。
這就是KVO最簡單的使用過程,但是我們肯定不僅僅滿足于如何使用KVO,想要探究在KVO背后,究竟發(fā)生了什么,且看下篇文章。