4-KVC

作者: 今晚打老虎_9527 | 来源:发表于2018-07-30 18:35 被阅读0次

    1.API

         //给属性设置值
         [objc setValue:@10 forKey:@"age"];    //只作用于属性
         [objc setValue:@10 forKeyPath:@"age"];    //可作用于属性的属性
         //取属性值
         [objc valueForKey:@"age"];
         [objc valueForKeyPath:@"age"];
         //kvc可以触发kvo
    

    2.setValue: forKey:原理

    1.查找setKey: ,再查找_setKey: ,如果有则直接调用,没有则第2步
    2.调用+ (BOOL)accessInstanceVariablesDirectly,如果该方法返回No,则抛出异常NSUnknownKeyException.如果该方法返回yes,则3
    3.查找成员变量_key,_isKey,key,isKey ,哪个先找到,就复制。如果都没有,则抛出异常NSUnknownKeyException.

    3.getValueforKey:原理

    1.按照getKey,key,isKey,_key
    2.如果1的方法都没有,调用+ (BOOL)accessInstanceVariablesDirectly,如果该方法返回No,则抛出异常NSUnknownKeyException.如果该方法返回yes,则3
    3.查找成员变量_key,_isKey,key,isKey ,哪个先找到,就取值。如果都没有,则抛出异常NSUnknownKeyException.

    相关文章

      网友评论

          本文标题:4-KVC

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