KVC (Key-Value Coding 键值编码)

本文详细介绍了Objective-C中的Key Value Coding (KVC)技术,包括如何通过key和keyPath设置及获取对象属性,以及其背后的实现原理。KVC允许间接访问对象的实例变量,无需暴露getter和setter方法。此外,KVC在修改值时会触发KVO机制,提供数据变化的通知。关键点在于KVC能够访问对象的一级和多级成员变量,并且在修改前后的通知机制使得它在数据绑定和观察中起到重要作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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机制;                

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值