UITableViewCell内存分配

时间:2016-09-09 07:26:26

标签: objective-c uitableview memory-management

我不确定使用tableView reuseIdentifier的{​​{1}}内存分配流程,还是static tableView方法内的delegate内存分配流程。

假设我们有20个从方法numberOfRowsInSection方法返回的数组计数,那么在cell方法之后通过调用cellForRowAtIndexPath {将在内存中分配多少[UITableViewCell alloc] { {1}}方法一次。

示例代码:

alloc

感谢您的时间,感谢任何有用的澄清。

2 个答案:

答案 0 :(得分:4)

对于初始时间,当您的表视图首次在视图上可见时(例如,它一次在屏幕上显示5个单元格),将分配5个单元格。向下滚动时,表视图不是使用dequeueReusableCellWithIdentifier重新实例化,而是重新使用现有的表视图。所以这意味着5个单元只在内存中。

因此,A UITableView通常会allocate只有UITableViewCell个对象来显示表格中可见的内容。

此设计模式称为Object Pooling

答案 1 :(得分:1)

您可以使用[tableView visibleCells] count],它会返回可见的表格单元格数,然后将分配更多单元格。当您向下滚动时,表视图不是创建新的tableviewcell,而是使用dequeueReusableCellWithIdentifier重新使用已存在的表视图.dequeueReusableCellWithIdentifier有助于减少使用内存。
示例:
如果屏幕可以容纳5个表格单元格,那么重复使用时,即使表格有1000个条目,也只需要在内存中分配5个表格单元格。