我有一个控制器类,用于存储联系人列表,我需要将此列表共享给将在此类阵列上实现KVO的对象。
最明显的解决方案是使用NSArray而不是NSMutableArray,以便每个人都可以使用控制器的相同实例变量,并且无法修改数组的内容。
现在,让我们看一下这个列表每3分钟可以更改一次,只有控制器可以更新数组的内容。
如果我dealloc并重新初始化联系人列表数组,我的所有KVO对象都将丢失对我的数组的引用。
最后: NSArray PRO:没有人可以改变阵列的内容 NSArray CON:控制器无法在没有dealloc的情况下修改数组,因此其他对象丢失了引用。
NSMutableArray PRO:Controller可以修改数组内容,所有对象都可以轻松共享相同的数组引用 NSMutableArray CON:每个人都可以修改数组。
有什么建议吗?
答案 0 :(得分:1)
NSArray
,因为它没有经常更新。
拥有并修改数组的对象通过类型为NSArray*
的属性公开它。观察者观察这个属性。只要拥有该数组的对象重新创建它,它就会将该属性设置为新的NSArray,然后在所有观察者上触发KVO。
或者,您可以为该属性实施indexed accessor patterns。