KVC底层原理 Key-value-coding

KVC Key-value-coding
里面主要是以下2个方法,下面分别对2个方法进行剖析。

-(id)valeueForKey:(NSString *)key

image.png

是否存在 get方法
如果存在 直接调用
首先会查找实例变量的get方法,如果查找到了,接直接调用赋值,否则,查找类似的实名变量,如果找到了就赋值,相似的概念,+(BOOL)accessInstanceVariablesDirectly 默认返回YES
如果对应的访问器不存在 判断实例变量是否存在valueForUndefinedKey,如果不存在NSUndefineKeyException

会查找同名的实例或相似的 根据同名变量是那个
_key
_isKey
key
isKey

-(void)setValue:(id)value forKey:(NSString *)key

image.png

和get方法相同,首先会查找实例变量的set方法,如果查找到了,接直接调用赋值,否则,查找类似的实名变量,如果找到了就赋值,相似的概念
_key
_isKey
key
isKey

你可能感兴趣的:(KVC底层原理 Key-value-coding)