KVOController 是一個(gè)簡(jiǎn)單安全的 KVO(Key-value Observing,鍵-值 觀察)工具,用于 iOS 和 OS X 應(yīng)用開(kāi)發(fā)中,開(kāi)源自 facebook。
KVO 是一個(gè)在 MVC(Model-View-Controller)應(yīng)用程序開(kāi)發(fā)中,用于不同模塊間交流的一個(gè)很有用的技術(shù)。 KVOController 是基于 Cocoa 久經(jīng)考驗(yàn)的 Key-value Observing 實(shí)現(xiàn)(implementation)開(kāi)發(fā)而成的。它提供了一個(gè)簡(jiǎn)單現(xiàn)代的 API,同時(shí)也是線程安全的。它有如下優(yōu)點(diǎn):
1.不需要手動(dòng)移除觀察者;框架自動(dòng)幫我們移除觀察者
2.使用 block 來(lái)替代方法能夠減少使用的復(fù)雜度,提升使用 KVO 的體驗(yàn);block或者selector的方式,方便使用
3.每一個(gè) keyPath 會(huì)對(duì)應(yīng)一個(gè)屬性,不需要在 block 中使用 if 判斷 keyPath;一個(gè)keyPath對(duì)應(yīng)一個(gè)SEL或者block,不需要統(tǒng)一的observeValueForKeyPath方法里寫if判斷
KVOControlle的實(shí)現(xiàn)只需要一個(gè)方法
方法1:檢測(cè)單個(gè)屬性的變化
方法2:檢測(cè)多個(gè)屬性變化
fbKVO = [FBKVOController controllerWithObserver:self];

一:kvo值檢測(cè)類型;
1:NSKeyValueObservingOptionNew 傳遞變化之后的值;
2:NSKeyValueObservingOptionOld 傳遞變化之前的值;
3:NSKeyValueObservingOptionInitial 觀察者會(huì)在程序初始時(shí),也就是觀察變化之前,優(yōu)化執(zhí)行一次 觀察動(dòng)作;即上述執(zhí)行上面 block操作一次;并且傳遞 默認(rèn)的值,和以后傳遞 變化后的值;
4:NSKeyValueObservingOptionPrior 會(huì)調(diào)用兩次觀察者操作,值改變之前,值改變之后;
二:獲取
kvo的值;
change[NSKeyValueChangeNewKey] ? 新值;
change[NSKeyValueChangeOldKey] ? ?舊值;
change[FBKVONotificationKeyPathKey] ?改變的屬性;
*/