KVC/KVO

本文详细介绍了iOS开发中的KVC(键值编码)和KVO(键值观察)两种核心机制。KVC用于通过字符串间接访问对象的私有属性,而KVO则提供了动态监听属性变化的功能。这两种机制在iOS开发中极为常见,尤其是在处理系统控件的私有属性和实现model与controller间的通信时。

1、KVC简介
全称是Key-value coding,翻译成键值编码。顾名思义,在某种程度上跟map的关系匪浅。它提供了一种使用字符串而不是访问器方法去访问一个对象实例变量的机制。

KVC的用法: 简单来说就是给对象的私有属性赋值.
常用到两个方法:

    // 层级结构较浅时使用
    - (id)valueForKey:(NSString *)key;
    - (void)setValue:(id)value forKey:(NSString *)key;
    // 层级结构较深时使用
    - (id)valueForKeyPath:(NSString *)keyPath;
    - (void)setValue:(id)value forKeyPath:(NSString *)keyPath;

应用: 更改系统控件的一些私有属性, 点语法无法获取, 采用KVC解决了我们的难题.

2、KVO简介
全称是Key-value observing,翻译成键值观察。提供了一种当其它对象属性被修改的时候能通知当前对象的机制。KVO机制适合实现model和controller类之间的通讯。

KVO的用法: 简单来说就是动态监听属性变化.
常用到的方法:

// 添加监听者
- (void)addObserver:(id)object
         forKeyPath:(NSString *)keyPath
            options:(NSKeyValueObservingOptions)options
            context:(void *)context;

// 监听方法, 所有KVO统一调用这个方法, 最好判断对象类型
// 使用[object isKindOfClass: []]进行判断
- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context;

 // 记得在dealloc方法中移除监听                      
- (void)removeObserver:(NSObject *)observer
            forKeyPath:(NSString *)keyPath;

应用:
图片/视频下载时监听进度, 制作进度条;
界面下拉刷新.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值