iOS中的KVC和KVO的理解

本文详细介绍了iOS开发中的KVC(键值编码)和KVO(键值观察)两大核心机制。KVC用于通过属性路径给属性赋值,而KVO则是一种基于KVC的观察者模式,能够在属性值发生变化时自动通知观察者。

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

1、KVC(key value coding)是键值编码,简单的来说就是通过setValue:属性值  valueForKeyPath:属性路径 来给属性赋值的。

如果属性是基本数据类型,那么这个操作就相当于的属性的setter 、getter方法;

KVC的内部实现:一个对象在调用setValue的时候;

a、首先根据方法名找到运行方法的时候所需要的环境参数;

b、他会从自己isa指针结合环境参数,找到具体的方法实现接口;

c、再直接查找得来的具体方法的实现;


2、KVO(Key Value Observing)就是键值观察,在监听时时建立在键值编码的基础之上的,也就是当指定的属性被修改了,允许对象接收到通知的机制。每次指定的属性被观察对象的属性被修改的时候,KVO都会自动的去通知相应的观察者,相当于设计模式中的观察者模式;


3、KVO的优点:

(1)当有属性值发生改变,KVO会自动提供消息通知;

(2)比较方便,KVO不需要开发人员添加任何代码,可以直接在程序中使用;

(3)支持多个观察者观察同一个属性;


KVO和通知的区别在于,KVO是对象之间的直接交互,而通知则需要通知中心notificationCenter来作为交互。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值