一、KVC與KVO
*“KVC”:key value Coding(索引值編碼) *目的:間接的修改或擷取對象的屬性,降低程式(類與類)之間的耦合度.
*“KVO”:key value Observer(索引值觀察),觀察者模式.(檢測模型變化用的多) *目的:通常用於觀察某個對象的某個屬性發生變化時,及時做出相應.
二、KVC的使用方式
KVC被稱為iOS開發平台的大招!!! 能快速修改對象屬性。 *[p1setValue:@“xxxx”forKeyPath:@“name”];修改指定對象屬性. *[arrvalueForKeyPath:@“book.bookName”]; 擷取對象屬性. *KVC通過鍵能直接取得數組. *在使用KVC時, 一定要保證索引值是存在的. *原理: KVC取值時, 如果發現取值的對象不包含指定的索引值,會自動進入對象內部成員進行尋找.
三、KVO的使用方式
*KVO通常用於觀察”對象某個屬性”發生變化時,做出相應的反應.(多用於觀察模型資料) *KVO和通知中樞的一個區別 : KVO只能盯著某個對象(在目前範圍內部工作),通知中樞可以穿越很多層(如viewController). *KVO使用步驟: *1.[stuaddObserver:selfforKeyPath:@"name" options:NSKeyValueObservingOptionNew |NSKeyValueObservingOptionOld context:@"myObserver"]; *2.observeValueForKeyPath. 當指定索引值發生改變時, 會自動調用這個方法 *3.removeObserver. 所有觀察者模式的效能都不好,需要及時移除。
直接上代碼: [objc] view plain copy // // XNViewController.m // KVC----KVO // // Created by neng on 14-6-21. // Copyright (c) 2014年 neng. All rights reserved. // #import "XNViewController.h" #import "XNPerson.h" #import "XNStudent.h" #import "XNBook.h" @interface XNViewController () @end /** * KVC: Key Value Coding(索引值編碼) * 間接修改/擷取對象的屬性, 降低類與類之間的耦合度. * KVO: Key Value Observer(索引值觀察) KVO通常用於觀察”對象的某個屬性“發生變化時,及時做出響應。 而NSNotificationCenter是需要POST"通知字串"(表示監聽的事件類型)的對象存在,通知中樞才能夠工作。 */ @implementation XNViewController - (void)viewDidLoad { [super viewDidLoad]; //1.簡單的修改對象屬性 [self kvcDemo1]; //2.對於子類, 也能直接修改 [self kvcDemo2]; //3.修改對象的book屬性. (相當麻煩, 好要建立book對象).KVC一句話 [self kvcDemo3]; //4.擷取對象的屬性值. 可批量擷取(如果是數組的話). [self kvcDemo4]; //KVO 示範 [self kvoDemo]; }