KVC和KVO别厘,其實用起來還是比較簡單的,KVC(Key-value coding)可以理解為鍵值對編碼,如果對象的基本類型纱烘,那么鍵值對編碼實際上和get闺兢,set方法沒有區(qū)別蔬充,如果是屬性是另外一個對象,那么發(fā)現(xiàn)KVC用起來還是非常順手乌奇,KVO(key-value observing)是鍵值對的觀察者模式,如果對象的屬性發(fā)生變更驶鹉,那么會觸發(fā)observeValueForKeyPath事件,KVO的這種通知特性讓我們在開發(fā)的時候節(jié)省了不必要的代碼絮识,提高了開發(fā)效率绿聘。
KVC鍵值對編碼
KVC的操作方法由NSKeyValueCoding協(xié)議提供,NSObject就實現(xiàn)了這個協(xié)議次舌,也就是說如果對象是NSObject的子對象那么就支持KVC操作熄攘,KVC有兩種操作方法,一種是設(shè)值彼念,一種是取值挪圾,可以理解為getter和setter,不過稍微有所不同的是逐沙,設(shè)置對象值的方法中有兩個哲思,setValue:屬性值 forKey:屬性名(一般的設(shè)置,比如說是說設(shè)置NSString,NSNumber等基本類類型吩案,setetValue:屬性值 forKeyPath:屬性路徑(定義兩個對象也殖,Person和Book,Person有一個類型為Book的屬性务热,如果需要在Person中設(shè)置Book的值忆嗜,那么可以使用此方法),讀取的也有兩種valueForKey:屬性名崎岂、valueForKeyPath:屬性名捆毫。
KVO觀察者模式
Key-Value Observing (KVO) 建立在 KVC 之上,能夠觀察一個對象的 KVC key path 值的變化冲甘,接下來的做的實例是在iOS中視圖的ViewDidLoad中實現(xiàn)的绩卤,跟KVC類似途样,不過可以監(jiān)聽值的變化,實現(xiàn)起來很簡單addObserver添加觀察濒憋,observeValueForKeyPath觀察變化之后的事件何暇,最后需要銷毀以下監(jiān)聽事件,概念就這么簡單