KVOController的使用

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] ?改變的屬性;

*/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • KVO 作為 iOS 中一種強(qiáng)大并且有效的機(jī)制,為 iOS 開(kāi)發(fā)者們提供了很多的便利;我們可以使用 KVO 來(lái)檢測(cè)...
    JzRo閱讀 1,078評(píng)論 0 2
  • KVO 作為 iOS 中一種強(qiáng)大并且有效的機(jī)制,為 iOS 開(kāi)發(fā)者們提供了很多的便利;我們可以使用 KVO 來(lái)檢測(cè)...
    Draveness閱讀 6,980評(píng)論 11 59
  • 上半年有段時(shí)間做了一個(gè)項(xiàng)目,項(xiàng)目中聊天界面用到了音頻播放,涉及到進(jìn)度條,當(dāng)時(shí)做android時(shí)候處理的不太好,由于...
    DaZenD閱讀 3,100評(píng)論 0 26
  • 一、_objc_msgForward函數(shù)是做什么的,直接調(diào)用它將會(huì)發(fā)生什么? _objc_msgForward是一...
    一個(gè)人一匹馬閱讀 401評(píng)論 0 1
  • 什么是坐標(biāo)系的轉(zhuǎn)換? 不同坐標(biāo)系,控件的View的frame值是不同的,比如上圖的紅色View,以藍(lán)色控件為父控件...
    船長(zhǎng)_閱讀 11,342評(píng)論 4 13

友情鏈接更多精彩內(nèi)容