UITableViewCell的重用

UITableViewCell的重用

一、Cell的 重用原理:
     当滚动列表时,部分 UITableViewCell 会移出窗口, UITableView 会将窗口外的 UITableViewCell 放入一个对象池中,等待重用。当 UITableView 要求 dataSource 返回 UITableViewCell 时, dataSource 会先查看这个对象池,如果池中有未使用的 UITableViewCell dataSource 会用新的数据配置这个 UITableViewCell ,然后返回给 UITableView ,重新显示到窗口中,从而避免创建新对象。

     还有一个非常重要的问题:有时候需要自定义 UITableViewCell( 用一个子类继承 UITableViewCell) ,而且每一行用的不一定是同一种 UITableViewCell ,所以一个 UITableView 可能拥有不同类型的 UITableViewCell ,对象池中也会有很多不同类型的 UITableViewCell ,那么 UITableView 在重用 UITableViewCell 时可能会得到错误类型的 UITableViewCell。

     解决方案: UITableViewCell 有个 NSString *reuseIdentifier 属性,可以在初始化 UITableViewCell 的时候传入一个特定的字符串标识来设置 reuseIdentifier( 一般用 UITableViewCell 的类名 ) 。当 UITableView 要求 dataSource 返回 UITableViewCell 时,先通过一个字符串标识到对象池中查找对应类型的 UITableViewCell 对象,如果有,就重用,如果没有,就传入这个字符串标识来初始化一个 UITableViewCell 对象。

二、Cell 的性能优化
UITableView
默认只会加载出现在屏幕上面的 cell ,没当有一个 cell 移除屏幕,就会存储到缓存池里找。
性能优化步骤:
步骤一:定义 cell 的标识(不需要每次都创建 cell 标识,因此需要使用 static static 标识只会在第一次创建,以后都不会创建了。)
步骤二:从缓存池里取 cell
步骤三:判断取出 cell 是否为空,如果为空就手动创建 cell

、如何提高 tableView 的性能
a 、重用 cell
我们都知道申请内存是需要时间,特别是在一段时间内频繁的申请内存将会造成很大的开销,而且上 tebleView cell 大部分情况下布局都是一样的,这个时候我们可以通过回收重用机制来提高性能。

b 、避免 content 的重新布局
尽量避免在重用 cell 时候,对 cell 的重新布局,一般情况在在创建 cell 的时候就将 cell 布局好。

c 、使用不透明的 subView
在定制 cell 的时候,将要添加的 subView 设置成不透明的会大大减少多个 view 层叠加时渲染所需要的时间。

d 、如果方便,直接重载 subView drawRect 方法
如果定制 cell 的过程中需要多个小的元素的话,最好直接对要显示的多个项目进行绘制,而不是采用添加多个 subView

e tableView delegate 的方法如非必要,尽量不要实现
tableView delegate 中的很多函数提供了对 cell 属性的进一步控制,比如每个 cell 的高度, cell 是否可以编辑,支持的 edit 风格等,如非必要最好不要实现这些方法因为快速的调用这些方法也会影响性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值