gpt4 book ai didi

ios - 模型 NSArray 是可变的还是不可变的?

转载 作者:行者123 更新时间:2023-11-28 22:05:05 24 4
gpt4 key购买 nike

我以前从未意识到这种二分法,所以我需要问你。假设我们有某种模型管理器类,它将通过公共(public)属性公开对象的 NSArray。这是我们的模型。现在我还有一个 View Controller ,它在 tableview 单元格中显示该数组的成员。我将这个 NSArray 设置为 tableview 的数据源。但是,如果我希望我的模型及时更改数据怎么办?

我有两个选择。1)使数组可变。2) 将实例 NSArray 替换为包含新数据的不同实例。

选项 1 的问题是任何人都可以更改数组的内容,这似乎是错误的。选项 2 的问题是 tableViewController 将愉快地继续指向原始数组实例,而忽略管理器类现在指向一个新实例(因为它用具有更新数据的实例替换了它的属性数组实例。)。

总而言之,我想要一个数组实例,它只能从模型管理器中改变,但对于外界是不可变的。哪一个是不可能的?有什么想法可以解决这个问题吗?

最佳答案

管理数组的对象也应该是 TableView 的数据源,或者 TableView 的数据源应该始终确保在 TableView 重新加载其数据之前从管理数组的对象获取数组的新副本。

无论哪种方式,表格 View 的数据源正在使用的数组最终应该是一个不可变的数组,并且任何时候这个数组被改变,都应该立即调用reloadData .

这将防止数组中的数据在显示数据的 TableView 中间被修改。例如,如果数组的内容在 numberOfRowsInSection: 被调用后发生变化,那就很成问题了。

关于ios - 模型 NSArray 是可变的还是不可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24233746/

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