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

    1.API 2.setValue: forKey:原理 1.查找setKey: ,再查找_setKey: ,如果有...

网友评论

      本文标题:4-KVC

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