当苹果为第一款iPhone开发UITableView
时,它们在滚动时遇到了性能问题。然后一位聪明的工程师发现,其原因是物体的分配带有价格,所以他想出了一种重用单元的方法。UITableView dequeueReusableCellWithIdentifier理论
“对象分配有性能上的成本,尤其是如果分配有在短期内,比如说,当 用户滚动表视图。如果你重用的小区,而不是分配 新的,反复发生的大大提升桌面表现。“
来源:iOS的参考库
要重新使用单元格使用:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
现在,我想知道是,到底发生了什么吗?如果有一个具有该标识符的单元格并返回该单元格,它是否会查看TableView?好吧,是啊,但如果它发送一个引用而不是分配,我有一个表视图,让我们说4个单元格具有相同的标识符都是可见的。它怎样才能将自身扩展为四个实例而不分配?
我想知道这一点,因为我正在构建日历类型组件,并且所有单元格都具有相同的结构,只有更改中的文本。所以如果我能以某种方式重用我的单元而不是分配,我想我可能会获得更好的性能。
我自己的理论是它分配了四个单元格(因为它也有)。当一个单元从屏幕上消失时,它将被放入TableView重用队列中。当需要一个新的单元时,它会查询具有相同标识符的单元是否可用,它会在该单元上调用prepareForReuse
方法,并将其自身从队列中移除。
简答:是的。它有一个单独的重用队列/集合,与表中已有的不同。 – 2010-08-23 23:18:15