gpt4 book ai didi

objective-c - 将 NSArray 实例共享给 KVO 对象

转载 作者:行者123 更新时间:2023-12-03 18:00:49 25 4
gpt4 key购买 nike

我有一个存储联系人列表的 Controller 类,我需要将此列表共享给将在此类数组上实现 KVO 的对象。

最明显的解决方案是使用 NSArray 而不是 NSMutableArray,以便每个人都可以使用 Controller 的相同实例变量,并且不可能修改数组的内容。

现在,让我们假设该列表每 3 分钟更改一次,并且只有 Controller 可以更新数组的内容。

如果我释放并重新初始化联系人列表数组,我的所有 KVO 对象都将丢失对我的数组的引用。

最后:NSArray PRO:没有人可以改变数组的内容NSArray CON: Controller 无法在没有dealloc的情况下修改数组,因此其他对象丢失了引用。

NSMutableArray PRO: Controller 可以修改数组内容,所有对象可以轻松共享数组的相同引用NSMutableArray CON:每个人都可以修改数组。

有什么建议吗?

最佳答案

NSArray 在我看来,因为它不经常更新。

拥有并修改数组的对象通过 NSArray* 类型的属性公开它。观察者观察这个性质。每当拥有该数组的对象重新创建它时,它都会将该属性设置为新的 NSArray,然后在所有观察者上触发 KVO。

或者,您可以实现 indexed accessor patterns为了属性(property)。

关于objective-c - 将 NSArray 实例共享给 KVO 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6532431/

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