model类为: 将监听的数组封装到model里,不能监听UIViewController里面的数组
注意!!!!!!不能这样[_model.modelArray addObject]方法,需要这样调用
[[_model mutableArrayValueForKey:@"modelArray"] addObject:str];
第一步:新建一个model(NSObject) ,内部设置一个需要观察的数组属性。
第二步:在VC中初始化Model---> self.dataSourceModel = [[y_dataSourceModelalloc] init];
第三步:添加观察者KVO
/**
* KVO 观察model中属性--- 数据源
*/
[self.dataSourceModel addObserver:self forKeyPath:@"dataSource"options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
第四步:实现观察的方法
#pragma mark -- KVO
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
if ([keyPath isEqualToString:@"dataSource"]) {
......
}
}
第五步:释放观察者
-(void)dealloc
{
if (self.dataSourceModel != nil) {
[self.dataSourceModel removeObserver:self forKeyPath:@"dataSource"];
}
}
使用KVO观察数组的变化
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 成长记录-连载(三十六) ——我的第一篇五千字长文,说了什么,你一定想不到 并不是不想每天写公众号,而是之前思考怎...
- iOS默认不支持KVO的形式来监听数组的变化,数组改变的时候,只是数组里面的值变化,但数组的地址没有变化,KVO监...
- 一丶如题: 使用类别(category)向一个已存在的类添加一个属性,是否能用kvo观察 二丶实验 1.正常情况:...