【发布时间】:2011-06-30 18:35:14
【问题描述】:
我有一个存储联系人列表的控制器类,我需要将此列表共享给将在此类数组上实现 KVO 的对象。
最明显的解决方案是使用 NSArray 而不是 NSMutableArray,这样每个人都可以使用相同的控制器实例变量,并且无法修改数组的内容。
现在,让我们想象一下这个列表可以每 3 分钟更改一次,并且只有控制器可以更新数组的内容。
如果我解除分配并重新初始化联系人列表数组,我的所有 KVO 对象都将丢失对我的数组的引用。
最后: NSArray PRO:没有人可以改变数组的内容 NSArray CON:控制器不能在没有dealloc的情况下修改数组,所以其他对象失去了引用。
NSMutableArray PRO:控制器可以修改数组内容,所有对象可以轻松共享数组的相同引用 NSMutableArray CON:每个人都可以修改数组。
有什么建议吗?
【问题讨论】:
标签: objective-c cocoa macos