0

请有人解释一下如何使用缓存来“重新排队”表格行单元格,这种方法真的有用吗,它如何提高性能?

4

2 回答 2

2

通过单元标识符重用单元对象可以提高性能。作为目标C的一些基本点

  • 当您分配和实例化一个对象时,它会获得一些内存空间。并且该内存空间的分配和初始化过程需要一些时间和内部处理。

因此,对于您在 cellForRowAtIndexpath 中重新使用单元格的查询,可以避免分配和解除分配的递归过程。简而言之,如果一个单元格不在显示器中,那么就没有必要为该单元格提供内存。

作为移动开发人员,我们始终关注操作系统资源有限的一件事。一个好的操作系统是一个能够以良好的方式响应每个进程的系统。因此,在 iOS 中,如果您不考虑内存问题,那么当他需要将该内存提供给其他应用程序时,这可能会导致 iOS 杀死您的应用程序。ARC 会处理这件事,但您也应该注意应用程序中没有内存泄漏的问题。或者您使用的内存没有超过您的应用所需的内存。

于 2013-10-04T17:00:14.617 回答
1

一个表格视图可能有数千行,如果每一行作为一个单元格(UIView)“永远”存在,那么经常会出现存储问题。

因此,iOS 会丢弃滚动到屏幕边缘的单元格并将它们放入重用队列中,这样一次存在的单元格可能不会超过 30 个(取决于屏幕和单元格大小)。

从重用池中重用单元格(与创建新单元格相比)节省了 iOS 分配和初始化新单元格的开销,并为您的应用节省了使用颜色、背景等“自定义”它们的开销。当然,单元格唯一的数据(例如,电话列表中的姓名和电话号码)在电池回收时必须“刷新”。因此,应用程序保留一些其他数据源(通常是 NSArray)以包含表中的所有“原始”数据,这一点很重要。

于 2013-10-04T17:35:36.170 回答