0

我正在开发一个表格视图,它将显示所有某种类型的托管对象,我想知道我是否应该做一些事情来防止在用户滚动并且我设置一个新单元格时一直触发错误在数据源中?

我不太了解大量托管对象(数百个)的详细信息,但我知道触发故障会耗费资源,如果每次出现单元格时,我都会询问托管对象的其中一个属性,我是否应该在 viewDidLoad 中创建一个单独的新数组,其中包含显示表格视图单元格所需的所有信息,从而防止托管对象的重复故障?

感谢您对此的任何帮助。

4

1 回答 1

2

Core Data 的介绍材料没有花时间在内存管理上是有原因的。Core Data 在内存使用方面非常高效,并且会自动处理它。如果您的应用程序遇到内存不足的问题,Core Data 会将未主动访问的活动对象转换为故障。

在表的情况下,如果您使用获取的结果控制器,您将不会在一次 gulp 中加载所有托管对象,而只会加载您直接访问其属性的那些对象。例如,假设您使用包含数千个按字母顺序排列的对象的索引表。首次加载表时,内存中只有 10 个左右填充可见单元所需的托管对象。如果您只使用“Z”的索引,则只有显示“Z”下一次显示的那几个单元格所需的托管对象被加载到内存中。即使您滚动浏览一个非索引表,您的内存使用量也很低,因为该表知道只为实际可读的行请求单元格。

过早的优化是所有编程罪恶的根源。不要浪费时间并增加复杂性,以防止您可能永远不会遇到的问题。

在 Core Data 的特定情况下,它为您处理了 95% 的内存问题。这是它的主要优势之一。我很少关注 Core Data 的内存使用。

相反,从最简单的实现开始。在您测试并发现问题之前,您不应该担心内存使用。

于 2010-08-09T11:10:51.217 回答