由于本人最近想換工作,趁此機(jī)會(huì)一一寫下沼死,希望在自己回顧的過程中可以幫到大家着逐。
1.KVO實(shí)現(xiàn)原理
想知道原理,那你首先得知道KVO是什么耙庵耸别?對(duì)不對(duì)。
KVO(key-value-observing)
簡單的來說浸间,就是一個(gè)對(duì)象注冊了一個(gè)監(jiān)聽者太雨,當(dāng)對(duì)象的屬性發(fā)生變化時(shí),監(jiān)聽作出相應(yīng)的動(dòng)作魁蒜。
2.KVO的使用非常簡單
addObserver:forKeyPath:options:context:
使用該方法囊扳,需要對(duì) 觀察的對(duì)象 注冊一個(gè)觀察者。
在這里估計(jì)有疑問的是options:一共有四個(gè)
1.NSKeyValueObservingOptionNew
:當(dāng)options中包括了這個(gè)參數(shù)的時(shí)候兜看,觀察者收到的change參數(shù)中就會(huì)包含NSKeyValueChangeNewKey和它對(duì)應(yīng)的值锥咸,也就是說,觀察者可以得知這個(gè)property在被改變之后的新值细移。
2.NSKeyValueObservingOptionOld
:和NSKeyValueObservingOptionNew的意思類似搏予,當(dāng)包含了這個(gè)參數(shù)的時(shí)候,觀察者收到的change參數(shù)中就會(huì)包含NSKeyValueChangeOldKey和它對(duì)應(yīng)的值弧轧。
3.NSKeyValueObservingOptionInitial
:當(dāng)包含這個(gè)參數(shù)的時(shí)候雪侥,在addObserver的這個(gè)過程中碗殷,就會(huì)有一個(gè)notification被發(fā)送到觀察者那里,反之則沒有速缨。
4. NSKeyValueObservingOptionPrior
:當(dāng)包含這個(gè)參數(shù)的時(shí)候锌妻,在被觀察的property的值改變前和改變后,系統(tǒng)各會(huì)給觀察者發(fā)送一個(gè)change notification旬牲;在property的值改變之前發(fā)送的change notification中仿粹,change參數(shù)會(huì)包含NSKeyValueChangeNotificationIsPriorKey并且值為@YES,但不會(huì)包含NSKeyValueChangeNewKey和它對(duì)應(yīng)的值原茅。
其實(shí)單純的看這個(gè)KVO 是非常簡單的東西吭历,但是我們在使用的過程中需要察覺到,這個(gè)東西是不是跟 KVC的名字很像擂橘,那么他們有關(guān)系嗎晌区。還有,KVO和通知有什么區(qū)別呢贝室? 這些問題大家是否都有討論過呢契讲。