• KVC


     

     KVC:操作属性的一种方式:设置属性的值、获取属性的值,主要有两个方法:setValue:forKey: valueForKey:

     1.setValue:forKey: 底层执行机制:

        (1)调用setter方法

        (2)若是没有setter,KVC机制则在类中寻找_key变量或key属性(通过_key访问),对其赋值

        (3)若没有找到_key的成员变量,则在类中寻找key成员变量,对其赋值

        (4)若都没有,则执行setValue:forUndefinedKey:方法

     

     setValue:@"test" forKey:@"name" :  1.调用setName方法 2.寻找_name成员变量 3.寻找name成员变量

     

     2.valueForKey: 底层执行机制:

        (1)调用getter方法

        (2)若是没有getter,KVC机制则在类中寻找_key的变量,获取值

        (3)若是没有_key成员变量,则在类中寻找key的成员变量,获取值

        (4)若是都没有,则执行valueForUndefinedKey

     

      valueForKey:@"name": 1.调用 name getter方法;2.寻找_name成员变量,获取值 3.寻找 name成员变量,获取值

     

     setValue:forUndefinedKey: valueForUndefinedKey: key的成员变量不存在时,会导致程序异常

     解决:在类中重新这两个方法。

     

     KVC优势:

        1.KVC 不但能够赋值,而且还能破坏只读的特性,能对只读的属性赋值。

        2.更重要的是KVC 有自动装箱(自动类型转换)的功能,我们不需要去转换类型。

        3.支持键值路径

  • 相关阅读:
    hdu_5791_Two(DP)
    hdu_5783_Divide the Sequence(贪心)
    hdu_5769_Substring(后缀数组)
    hdu_5778_abs(暴力)
    hdu_5776_sum(前缀和维护)
    hdu_5777_domino(贪心)
    [wikioi2069]油画(贪心)
    [bzoj 1503][NOI 2004]郁闷的出纳员(平衡树)
    数据结构练习
    [poj3274]排排站(Hash)
  • 原文地址:https://www.cnblogs.com/xiangjune/p/5341980.html
Copyright © 2020-2023  润新知