iOS之UITableViewCell的重用机制

UITableView的重用机制,其目的是为了做到显示和数据分离。UITableView并不会为每一组数据创建一个UITableViewCell。而是只创建屏幕可显示最大个数的Cell,然后重复使用这些cell,对cell做单独的显示配置。来达到既不影响显示效果,又能充分节约内存的目的。

重用实现分析:

UITableView头文件中,可以看到NSMutableArray* visiableCells和NSMutableDictionary resusableTableCells两个结构。

visiableCells内保存当前显示的cells, reuseableTableCells保存可重用的cells。


tableView创建之初,resuableTableCells为空,tableView dequeueReuseableCellWithIndentifier:cellIdentfier返回nil。开始的cell都是通过

[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIndentifier:cellIndentifier];
 

创建出来的。


1.tableView数据显示一屏幕无法显示完的情况下,首先,tableView会创建一屏幕个数的cell,并将一屏幕的cells加入可视化数组 visiableCells中去。reuseableTableCells中cells为空。

2.tableView向上滑动时候,有新的cell需要显示,talbeView会根据cellIndentifier查寻reuseableTableViewCells。若有cellIndentifier相同的Cell,返回可重用的Cell。如果没有,则创建出新的cell。加入可视化数组。cell的数据将会在cell创建完成之后重新赋值。当顶部的cell划出屏幕时,会将此cell从visiableCells中移出,加入reuseTableViewCells中。

3.再次拖动tableView。执行2中相同的步骤。

一些visiableCellsl数组和reuseableTableViewCells会变化的情况。

reloadData 会把所有的cell移入reuseableTableViewCells,visiableCells清空。再根据1,2中cell创建的规则处理。

reloadRowsAtIndexPath刷新指定indexPath的Cell。将当前indexPath的Cell,调用resuableTableCells中的cell,数组中无cell,创建新的cell,加入到visiableCell。老的cell移入resuableTableCells。

注意:

重用机制中UITableView是根据标识符cellIndentifier来重用cell。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值