KVOController 是一個(gè)簡單安全的 KVO(Key-value Observing,鍵-值 觀察)工具屁奏,用于 iOS 和 OS X 應(yīng)用開發(fā)中,開源自 facebook。
KVO 是一個(gè)在 MVC(Model-View-Controller)應(yīng)用程序開發(fā)中赖条,用于不同模塊間交流的一個(gè)很有用的技術(shù)。 KVOController 是基于 Cocoa 久經(jīng)考驗(yàn)的 Key-value Observing 實(shí)現(xiàn)(implementation)開發(fā)而成的常熙。它提供了一個(gè)簡單現(xiàn)代的 API纬乍,同時(shí)也是線程安全的。它有如下優(yōu)點(diǎn):
1.不需要手動(dòng)移除觀察者裸卫;框架自動(dòng)幫我們移除觀察者
2.使用 block 來替代方法能夠減少使用的復(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:檢測單個(gè)屬性的變化
方法2:檢測多個(gè)屬性變化
fbKVO = [FBKVOController controllerWithObserver:self];
一:kvo值檢測類型调炬;
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] ?改變的屬性;
*/