objective-c – 在NSMutableArray中观察计数

栏目: Objective-C · 发布时间: 5年前

内容简介:我希望在计数时得到通知,即. NSArray中的项目数量发生变化..当然我不需要这个,如果我控制添加和删除对象到数组中.但我不是,它在业务流程模型方面无法预测,并且取决于外部因素.有一些简单优雅的解决方案吗?

我希望在计数时得到通知,即. NSArray中的项目数量发生变化..

当然我不需要这个,如果我控制添加和删除对象到数组中.但我不是,它在业务流程模型方面无法预测,并且取决于外部因素.

有一些简单优雅的解决方案吗?

编辑:我当然正在纠正这个NSMutableArray ..

你需要使用 KVC

.但是如何去做呢?毕竟,NSMutableArray不符合其变异方法或内容更改的键值编码.答案是代理-as子类NS [Mutable]数组太麻烦了.

NSProxy是一个很棒的小类,你可以使用它来拦截发送到你的数组的消息,就好像你是一个NSMutableArray,然后将它们转发到一些内部实例.不幸的是,它也不符合KVC,因为KVC的胆量存在于NSObject中.那么我们必须使用它.示例界面可能如下所示:

@interface CFIKVCMutableArrayProxy : NSObject  {
    NSMutableArray *_innerArray;
}

- (NSUInteger)count;

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
- (void)removeObjectAtIndex:(NSUInteger)index;
- (void)addObject:(id)anObject;
- (void)removeLastObject;
- (void)insertObjects:(NSArray *)objects atIndexes:(NSIndexSet *)indexes;
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;

//…

@end

正如您所看到的,我们正在模拟NSMutableArray的接口,这是必要的,因为我们的代理应该实现所有内容,就像它是NSMutableArray一样.这也使得实现尽可能简单,因为我们可以将选择器转发到我们的内部NSMutableArray指针.为了简洁起见,我将只实现两种方法来向您展示大致轮廓的样子:

@implementation CFIKVCMutableArrayProxy

//…

- (NSUInteger)count {
    return _innerArray.count;
}

- (void)addObject:(id)anObject {
    [self willChangeValueForKey:@"count"];
    [_innerArray addObject:anObject];
    [self didChangeValueForKey:@"count"];
}

- (void)removeLastObject {
    [self willChangeValueForKey:@"count"];
    [_innerArray removeLastObject];
    [self didChangeValueForKey:@"count"];
}

@end

如果您没有机会像这样包装数组,那么请尝试重新考虑您的代码.如果外部依赖项迫使您进入此类角落,请尝试将其删除.解决自己的 工具 总是一件坏事.

翻译自:https://stackoverflow.com/questions/10059279/observing-count-in-nsmutablearray


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算几何

计算几何

周培德 / 2008-7 / 69.00元

《计算几何:算法设计与分析(第3版)》系统地介绍了计算几何中的基本概念、求解诸多问题的算法及复杂性分析,概括了求解几何问题所特有的许多思想方法、几何结构与数据结构。全书共分11章,包括:预备知识,几何查找(检索),多边形,凸壳及其应用,Voronoi图、三角剖分及其应用,交与并及其应用,多边形的获取及相关问题,几何体的划分与等分、算法的运动规划、几何拓扑网络设计、随机几何算法与并行几何算法等。一起来看看 《计算几何》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试