91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IOS 中KVC的使用方法實例詳解

發布時間:2020-10-09 03:45:15 來源:腳本之家 閱讀:170 作者:lqh 欄目:移動開發

IOS 中KVC的使用方法實例詳解

KVC是Key Value Coding的縮寫,意思是鍵值編碼。在iOS中,提供了一種方法通過使用屬性的名稱(也就是Key)來間接訪問對象的屬性方法。說的有的拗口,實際上就是通過類定義我們可以看到類的各種屬性,那么使用屬性的名稱我們就能訪問到類實例化后的對象的這個屬性值。

      這個方法可以不通過getter/setter方法來訪問對象的屬性。因為一個類的成員變量如果沒有提供getter/setter的話,外界就失去了對這個變量的訪問渠道。而KVC則提供了一種訪問的方法,這個在某些場合會很有威力。 

      不多說了,上代碼:

@interface myPerson : NSObject 
{ 
  NSString *_name; 
  int   _age; 
  int   _height; 
  int   _weight; 
} 
@end 
@interface testViewController : UIViewController 
 
@property (nonatomic, retain) myPerson *testPerson; 
 
@end 
- (void)testKVC 
{ 
  testPerson = [[myPerson alloc] init]; 
   
  NSLog(@"testPerson's init height = %@", [testPerson valueForKey:@"height"]); 
  [testPerson setValue:[NSNumber numberWithInt:168] forKey:@"height"]; 
  NSLog(@"testPerson's height = %@", [testPerson valueForKey:@"height"]); 
} 

        第一段代碼是定義了一個myPerson的類,這個類有一個_height的屬性,但是沒有提供任何getter/setter的訪問方法。同時在testViewController這個類里面有一個myPerson的對象指針。 

        當myPerson實例化后,常規來說是無法訪問這個對象的_height屬性的,不過通過KVC我們做到了,代碼就是testKVC這個函數。

        運行之后打印值就是: 

2013-11-02 11:16:21.970 test[408:c07] testPerson's init height = 0
2013-11-02 11:16:21.971 test[408:c07] testPerson's height = 168

    這就說明確實讀寫了_height屬性。 

    KVC的常用方法:

 
- (id)valueForKey:(NSString *)key; 
- (void)setValue:(id)value forKey:(NSString *)key; 

    valueForKey的方法根據key的值讀取對象的屬性,setValue:forKey:是根據key的值來寫對象的屬性。 

    這里有幾個要強調一下

1. key的值必須正確,如果拼寫錯誤,會出現異常
2. 當key的值是沒有定義的,valueForUndefinedKey:這個方法會被調用,如果你自己寫了這個方法,key的值出錯就會調用到這里來
3. 因為類key反復嵌套,所以有個keyPath的概念,keyPath就是用.號來把一個一個key鏈接起來,這樣就可以根據這個路徑訪問下去
4. NSArray/NSSet等都支持KVC

 以上就是IOS KVC的使用方法,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

碌曲县| 洛隆县| 丹江口市| 库尔勒市| 壶关县| 乌审旗| 黄陵县| 浪卡子县| 朔州市| 呼图壁县| 越西县| 怀宁县| 区。| 奉节县| 石首市| 米林县| 定南县| 会理县| 家居| 金门县| 卢氏县| 敦煌市| 富蕴县| 七台河市| 重庆市| 永寿县| 谢通门县| 枣庄市| 北安市| 永城市| 通许县| 淳安县| 仪征市| 库伦旗| 攀枝花市| 南部县| 昌宁县| 乌兰察布市| 阿城市| 伊吾县| 铁力市|