美文网首页
kvc原理的相关知识

kvc原理的相关知识

作者: 书上说says | 来源:发表于2020-08-14 12:06 被阅读0次

    kvc-key value coding键值编码:利用不明确的方法对属性进行存取操作

    valueForKey(单级属性取值) 的总体规则:
    1.先找相关方法,如
    1.1 get方法 get<key>
    1.2 key同名方法 key
    1.3 容器方法 countOf<key> + objectIn<key>AtIndex
    2.如果没找到相关方法,会去判断

    + (BOOL)accessInstanceVariablesDirectly
    

    是否返回YES(默认返回YES), accessInstanceVariablesDirectly如果返回了NO,就可以防止外部通过kvc的方式访问内部的成员变量
    3.1 如果返回了NO,则会执行

    - (id)valueForUndefinedKey:(NSString *)key
    

    系统抛出异常,未找到key
    3.2 如果返回了YES,再去找相关变量(_name,_isName,name,isName 优先级大→小)

    setValue (存值) 的总体规则:

    1. 查找相关方法
      1.1 set<key>
      1.2 setIs<key>
    2. 如果没有相关方法,判断accessInstanceVariablesDirectly,如果返回NO,则会抛出异常
    - (void)setValue:(id)value forUndefinedKey:(NSString *)key
    

    如果返回了YES,则查找相关变量

    valueForKey/valueForKeyPath 隐藏方法:
    max,min,sum,count
    例如: [array valueForKey:@"@count"];查找数组元素个数
    [array valueForKey:@"@max"];查找数组最大的元素

    相关文章

      网友评论

          本文标题:kvc原理的相关知识

          本文链接:https://www.haomeiwen.com/subject/rjsidktx.html