OC高階語法之KVC和KVO的學習

2021-06-28 07:59:05 字數 1374 閱讀 4367

這是oc語法中重要的部分,學習者絕對不能因為想偷懶而不學這個。

一、鍵值編碼kvc(key value coding)

相對kvo,這個比較簡單。

1.  最基本的kvc由nskeyvaluecoding協議提供支援,基本的操作屬性的兩個方法:

setvlaue:屬性值   forkey:屬性名  ---》這是為指定屬性設定值

valueforkey:屬性名  ---》獲取指定屬性的值

舉例:user *user = [ [ user alloc] init ] ;

[user setvalue:@"孫悟空" forkey:@"name"];

nslog(  @" user的name為:%@ " , [user  valueforkey:@"name"] );

列印結果:user的name為:孫悟空

2.  kvc除了操作物件的屬性外,還可操作物件的「復合屬性」。所謂「復合屬性」,簡單來說,就是乙個物件作為另乙個物件的乙個屬性。kvc機制將其成為key路徑。

kvc協議中為操作key路徑的方法如下:

setvalue:forkeypath: ---》根據key路徑設定屬性值

valueforkeypath: ---》根據key路徑獲取屬性值

舉例如下:

@end

person.h

#import @inte***ce person : nsobject

@end

main.m

#import #import "person.h"

int main(int argc, const char * argv)

return 0;

}

二、鍵值監聽kvo(key value observing)

實現監聽。主要兩步:

1.  註冊監聽

forkeypath是要監聽的屬性

2.  實現監聽方法

//監聽後執行的方法

-(void)observevalueforkeypath:(nsstring *)keypath ofobject:(id)object change:(nsdictionary *)change context:(void *)context

object代表監聽的物件。change代表發生的改變。

最後,記得移除監聽:重寫父類dealloc方法,

- (void)dealloc

列印結果:

change:

OC中的KVC和KVO(一)

設計模式 觀察者模式 設計模式是用來解決某一特定問題 1.什麼是觀察者模式?在工程中,一些類去觀察 a 類,當 a 類發生改變時,這些類就收到訊息,做出相應反應。2.什麼時候使用觀察者模式 當乙個類需要傳送訊息給多個類時,就使用觀察者模式 3.觀察者模式的作用 一對多的訊息傳送 4.oc中觀察者模式...

kvc和kvo的區別

on 2012 年 6 月 7 日,in iphone,by donly kvc 與 kvo 是 objective c 的關鍵概念,個人認為必須理解的東西,下面是例項講解。乙個物件擁有某些屬性。比如說,乙個 person 物件有乙個 name 和乙個 address 屬性。以 kvc 說法,per...

KVO和KVC的對比理解

kvc 與 kvo 是 objective c 的關鍵概念,個人認為必須理解的東西,下面是例項講解。乙個物件擁有某些屬性。比如說,乙個 person 物件有乙個 name 和乙個 address 屬性。以 kvc 說法,person 物件分別有乙個 value 對應他的 name 和 address...