KVO监听/观察数组的内容的变化

本文详细介绍了KVO(键值观察)机制的使用方法及注意事项,包括如何设置被观察的对象、如何正确地修改被观察属性以触发观察者回调等。文章通过实例展示了在iOS开发中如何避免常见陷阱。

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

 

kvo方法很简单,但是有几个需要注意的地方。(自己就掉坑里了)

 

例如:我需要监听 _selectedArray 数组内容的变化

 

伪代码:

 

注意点1,如果数组放到ViewController里面是无法监听的,我们需要把数组放到一个继承NSObject的类里面

1,首先新建一个类

@interface  ObserveModel : NSObject

@property (nonatomic) NSMutableArray *array;

@end

@implementation ObserveModel

@end

 

2,把_selectedArray 赋给ObserveModel的属性

    _observeModel = [ObserveModel new];

    _observeModel.array = _selectedArray;

 

3,添加观察者:

 [_observeModel addObserver:self forKeyPath:@"array" options:NSKeyValueObservingOptionNew context:nil];


4,实现方法 :如果_observeModel.array 发生了改变,则会调用该方法。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context{

 

}

 

注意点2,如果我们修改_observeModel.array  

不能使用[_observeModel.array addObject:cartModel]

需要使用[[_observeModel mutableArrayValueForKey:@"array"]addObject:cartModel] 

 具体原因可以查查KVO的实现机制。

5,最后记得移除观察者

    [_observeModel removeObserver:self forKeyPath:@"array"];  

 

转载于:https://my.oschina.net/yup/blog/671281

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值