KVC: KVC(NSKeyValueCoding) “鍵-值-編碼”是一種間接訪問對象屬性(用字串表徵)的機制,而不是直接通過調用設定器訪問器方法或者點(.)文法去訪問對象的屬性。因此,對象的屬性都可以以一致的方式訪問。可通過字串訪問對象屬性。
KVC可以用來訪問和設定屬性的值。
設定方式:[self setValue:aName forKey:@"name"]
等同於 self.name = aName;
訪問⽅方式: aString=[self
valueForKey:@"name"] 等同於
aString = self.name;
***************************************
KVO:KVO(NSKeyValueObserving) “鍵-值-監聽”定義了這樣一種機制,當對象的屬性值發生變化的時候,我們能收到一個“通知”。
NSObject類為所有對象提供了一個自動觀測能力的機制(NSKeyValueObserving),你可以根據具體需要來開啟這個監聽機制。
KVO是基於KVC來實現的。
實現監聽步驟
1、註冊監聽對象。 anObserver指監聽者,keyPath就是要監聽的屬性值, 而context方便傳輸你需要的資料,它是個指標類型。
-(void) addObserver:(NSObject *)anObserver
forKeyPath:(NSString *)keyPath
options:(NSKeyValueObservingOptions)options
context:(void *)context
其中, options是監聽的選項,也就是說明監聽返回的字典包含什麼值。有兩 個常用的選項:
NSKeyValueObservingOptionNew 指返回的字典包含新值。
NSKeyValueObservingOptionOld 指返回的字典包含舊值。
2、實現監聽方法。監聽方法在Value(屬性的值)發生變化的時候自動調用。
-(void) observeValueForKeyPath : (NSString *) keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
其中,object指被監聽的對象。change裡儲存了一些變化的資料,比如變化 前的資料,變化後的資料。
***************************************
通知:iOS開發架構中的一種設計模式
一般用於M、V、C的間的資訊傳遞
Notification對象有兩個重要的成員變 量: name 和 object. 一般name用來唯一標示一個通知對象,object指通知發 送者。
Notification對象包含一個參數,就是字典(選擇性參數),這個字典中儲存一 些傳值過程中的資訊,供接收者使用。系統要求這個參數是不可變字典。
Notification * notification = [NSNotification notificationWithName:aName
object:aObj
userInfo:aDictionary];
擷取通知中樞
+ (NSNotificationCenter *)defaultCenter //擷取通知中樞
發送通知
-(void)postNotification:(NSNotification *)notification //發送通知
自訂通知
自訂通知是指開發人員自己來定義通知。自訂通知的一般步驟:
註冊監聽者
建立並發送通知
移除監聽者
//註冊通知
[[NSNotificationCenter
defaultCenter] addObserver:self selector:@selector(didFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
//移除通知 一般放在dealloc方法中移除。也可以放
在需要的地方移除。
[[NSNotificationCenter
defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];