亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2017年09月03日 10:43:27   投稿:lqh  
這篇文章主要介紹了IOS 中KVC的使用方法實例詳解的相關資料,這提供具體使用方法,希望能幫助到大家,需要的朋友可以參考下

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實例化后,常規(guī)來說是無法訪問這個對象的_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的使用方法,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • iOS輸出手機系統版本號

    iOS輸出手機系統版本號

    這篇文章主要介紹了iOS輸出手機系統版本號的相關資料,需要的朋友可以參考下
    2017-07-07
  • iOS實現圖片六邊形陰影效果

    iOS實現圖片六邊形陰影效果

    這篇文章給大家分享了如何利用iOS實現圖片六邊形陰影的效果,文中給出實現的示例代碼,對大家的理解和學習很有幫助,有需要的可以參考借鑒,下面來一起看看吧。
    2016-09-09
  • IOS代碼筆記UIView的placeholder的效果

    IOS代碼筆記UIView的placeholder的效果

    這篇文章主要為大家詳細介紹了IOS實現placeholder效果的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • iOS輕點、觸摸和手勢代碼開發(fā)

    iOS輕點、觸摸和手勢代碼開發(fā)

    這篇文章主要為大家詳細介紹了iOS輕點、觸摸和手勢代碼開發(fā),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • iOS UIPickerView的簡單封裝示例

    iOS UIPickerView的簡單封裝示例

    這篇文章主要給大家介紹了關于iOS UIPickerView的簡單封裝的相關資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • iOS中常用的宏定義總結

    iOS中常用的宏定義總結

    這篇文章主要給大家介紹了關于iOS中常用的宏定義的相關資料,例如UI元素、Log、系統、顏色類等等的示例代碼,文中介紹地方非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-08-08
  • iOS中監(jiān)聽UITextField值改變事件的方法實例

    iOS中監(jiān)聽UITextField值改變事件的方法實例

    UITextField 是一個用來處理文本輸入和現實的控件,在我們的開發(fā)當中也是經常被用到。下面這篇文章主要給大家介紹了關于iOS中監(jiān)聽UITextField值改變事件的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-07-07
  • iOS在狀態(tài)欄上顯示提醒信息的功能定制

    iOS在狀態(tài)欄上顯示提醒信息的功能定制

    這篇文章主要給大家介紹了iOS在狀態(tài)欄上顯示提醒信息的相關資料,實現后的效果非常不錯,文中給出了詳細的示例代碼供大家參考學習,需要的朋友們下面來一起看看吧。
    2017-06-06
  • 詳解Swift model 解析的兩種方法

    詳解Swift model 解析的兩種方法

    這篇文章主要介紹了詳解Swift model 解析的兩種方法的相關資料,希望通過本文大家能夠掌握這里的兩種實現方法,需要的朋友可以參考下
    2017-09-09
  • iOS中多線程的入門使用教程(Swift)

    iOS中多線程的入門使用教程(Swift)

    這篇文章主要給大家介紹了關于iOS中多線程入門使用的相關資料,一個進程中可以開啟多條線程,每條線程可以并行執(zhí)行不同的任務,本文通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-11-11

最新評論