objective-c – 在NSMutableArray中观察计数

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

内容简介:我希望在计数时得到通知,即. 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


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

查看所有标签

猜你喜欢:

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

标签

标签

Gene Smith / 张军、陈军亮 / 机械工业出版社 / 2012-6 / 59.00元

本书对标记系统这一概念的内涵和外延进行了系统化的、深入浅出的阐述。从什么是标记系统、标记系统有什么价值,到标记系统的架构和与其他分类系统的对比,再到标签的呈现方式和标记系统的实现细节,作者都用通俗易懂的语言进行了阐述,并附有详细的示例和具体的案例研究。本书的每一章都涵盖了标记系统的一个方面,主要内容包括:标记系统的模型、价值、架构,标签的分类、可视化、管理方法,最后介绍标记系统设计方法。本书带领读......一起来看看 《标签》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

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

正则表达式在线测试