对于我来说@property
,修改该属性后,我可以让setter做一些额外的工作,但是对于NSMutableArray,我经常使用诸如[NSMutableArray replaceObjectAtIndex:(NSInteger) withObject:(id)];
修改数组之类的方法。如何编写将对象替换/插入NSMutableArray中时将被调用的方法?
最好的解决方案是使用键值观察系统来观察阵列的变化。但是,使用数组执行此操作并非一帆风顺。
引用一个类似的问题:
您不能
-addObserver:forKeyPath:options:context:
直接在NSArray上调用...您想以[属性名称]为键在[对象]上调用它。您还没有完成。普通的自动KVO通知仅在您调用时才起作用
-setPlayerNameArray:
,从而替换了整个数组。如果您想要更详细的通知,则需要使用-willChange:valuesAtIndexes:forKey:
并且-didChange:valuesAtIndexes:forKey:
每当您插入,删除或替换该数组中的项目时。每当数组内容更改时,这将发送一条通知。根据添加观察者时使用的NSKeyValueObservingOptions的不同,您还可以获取所做的增量更改-一个很酷的功能,但是在这种情况下可能不需要它。
某种程度上为您工作,创建一个内部ObservableArray
使用新类并不太难NSArray
,但是NSNotification
每当有更改时都会发布。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句