這是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...