KVC,通过Key来访问对象的某个属性
使用:
1.通过- (void)setValue:(id)value forKeyPath:(NSString *)keyPath
或
- (void)setValue:(id)value forKey:(NSString *)key方法修改对象对应的key或keyPath的值。
2.通过- (id)valueForKeyPath:(NSString *)keyPath
或
- (id)valueForKey:(NSString *)key方法获取对象对应的key或keyPath的值。
原理:
1.- (void)setValue:(id)value forKeyPath:(NSString *)keyPath的原理:
注:accessInstanceVariablesDirectly方法的默认返回值是YES,YES表示可以直接访问实例变量。
2. - (id)valueForKey:(NSString *)key的原理:
备注:
1.key可以访问对象的一级成员变量,如"object.ivar",keyPath可以下探访问对象更低级别的成员变量,如"object.object.ivar";
2.KVC会在修改值之前调用willChangeValueForKey,修改完成后调用didChangeValueForKey,这样就必然会触发KVO机制;