美文网首页
KVC 存取

KVC 存取

作者: Taureau_2d81 | 来源:发表于2017-05-30 14:53 被阅读0次

当调用setValue:属性值 forKey:@”name“的代码时,底层的执行机制如下:

程序优先调用set:<Key>属性值方法,代码通过setter方法完成设置,如果没有找到setName:方法,KVC机制会检查+ (BOOL)accessInstanceVariablesDirectly方法有没有返回YES,默认该方法会返回YES,如果你重写了该方法让其返回NO的话,那么在这一步KVC会执行setValue:forUNdefinedKey:方法。

如果该类即没有set<Key>:方法,也没有_<Key>和_is<Key>成员变量,KVC机制再会继续搜索<Key>和is<Key>的成员变量。再给它们赋值。

如果上面列出的方法或者成员变量都不存在,系统将会执行该对象的setValue:forUNdefinedKey:方法,默认是抛出异常。

当调用ValueforKey:@”name“的代码时,KVC对key的搜索方式不同于setValue:属性值 forKey:@”name“,其搜索方式如下

首先按get<Key>,<Key>,is<Key>的顺序方法查找getter方法,找到的话会直接调用。如果是BOOL或者int等值类型, 会做NSNumber转换

会按_<Key>,_is<Key>,,is<Key>的顺序搜索成员变量名

相关文章

  • KVC 存取

    当调用setValue:属性值 forKey:@”name“的代码时,底层的执行机制如下: 程序优先调用set:<...

  • KVC

    35 KVC KVC(key-value-coding)能够让程序通过名称直接存取属性。因为与KVC有关的方法都是...

  • KVC & KVO 小结

    KVC 什么是KVC? KVC(Key-value coding)是一种通过字符串去识别并间接存取(access)...

  • KVC是怎么访问属性的?KVO怎么实现的?

    KVC是怎么访问属性的 KVC在某种程度上提供了替代存取方法(访问器方法)的方案,不过存取方法终究是个好东西,以至...

  • KVC&KVO

    KVC(key-value coding) 概要 KVC允许开发者通过名字访问属性,无需调用明确的存取方法,这样开...

  • KVC和KVO的使用及原理

    关于KVC KVC是什么? Key-Value Coding,即键值编码。它是一种不通过存取方法,而通过属性名称字...

  • KVC和KVO的使用及原理

    关于KVC KVC是什么? Key-Value Coding,即键值编码。它是一种不通过存取方法,而通过属性名称字...

  • KVC底层原理

    什么是KVC?通过key值,来获取对象的属性进行操作,而不是通过我们明确的存取方法获取。 一、KVC的get方法 ...

  • iOS 对KVC、KVO理解

    什么是KVC KVC键值编码,允许通过key名直接访问对象的属性或者给对象的属性赋值,而不需要调用对象的存取方法。...

  • kvc原理的相关知识

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

网友评论

      本文标题:KVC 存取

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