gpt4 book ai didi

cocoa - 观察 NSMutableArray - 仅使用数组访问器

转载 作者:行者123 更新时间:2023-12-03 16:35:45 28 4
gpt4 key购买 nike

我有一个在界面中公开的可变数组。我还公开了数组访问器来修改数组。如果数组内发生任何修改,我将不得不使用 KVO 重置并重新计算一些数据。为了支持 KVO,我使用 array accessors如下图:

数组属性+数组访问器+数组访问器的包装器:

Mutable Array:
@property (nonatomic, strong) NSMutableArray *portfolioItemArray;

Array Accessors:
-(void)insertObject:(Service*)object inPortfolioItemArrayAtIndex:(NSUInteger)index;
-(void)removeObjectFromPortfolioItemArrayAtIndex:(NSUInteger)index;
-(void)insertPortfolioItemArray:(NSArray *)array atIndexes:(NSIndexSet *)indexes;
-(void)removePortfolioItemArrayAtIndexes:(NSIndexSet *)indexes;

Wrappers for Array Accessors:
-(void)addObjectToPortfolioItemArray:(Service*)inObject;
-(void)removeObjectFromPortfolioItemArray:(Service*)inObject;
-(void)addObjectsToPortfolioItemArray:(NSArray*)inPortfolioItemsArray;
-(void)removeObjectsFromPortfolioItemArray:(NSArray*)inPortfolioItemsArray;

一切都好,只要数组访问器或其包装器也被其他程序员调用,KVO 就会被触发。

问题:其他一些开发人员可能会选择执行:

[portfolioObject.portfolioItemArray addObject:xxxxx];

而不是:

[portofolioObject addObjectToPortfolioItemArray:xxxxx];

这会搞砸整个设置并且不会触发 KVO。有没有更好的机制来处理这个问题?如何避免程序员选择直接插入可变数组而不使用数组访问器?

编辑:忘了提及,我必须公开该数组,因为它可以从外部设置(部分要求)。我通过覆盖 -portfolioItemArray 的 setter 来更新我的 KVO 观察。

最佳答案

不要公开可变数组。公开一个不可变数组和一些改变投资组合的方法。

关于cocoa - 观察 NSMutableArray - 仅使用数组访问器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25802900/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com