TableView 性能优化之 Cell 的复用原理

// 每当有一个 Cell 进入视野范围,都会调用一次该方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [[UITableViewCellalloc]init];

return cell;

}

也就是说,当你上下滑动的时候,只要有新的 Cell 进入了屏幕的显示范围,那么就会去调用一次这个方法,去创建一个新的 Cell。而对于滑出视野之外的 Cell 做销毁处理,在再次出现时再次调用该方法,重新创建 Cell。

而创建一个 Cell 需要分配内存空间,分配内存的过程是很耗费性能的。


优化思路

那么进行优化的思路即为如何利用已创建的 Cell ,将它循环使用,而不是只要有新的 cell 进来都去创建一次


另外,缓存池中可能有其他类的 Cell ,为了区分,我们给 Cell 添加一个标识。 

即整个的解决方案为

在创建一个 Cell 时,给它一个标识,有 Cell 整个滑出屏幕时,将它放到缓存池中,在有 Cell 需要进入屏幕时,就去缓存池中瞅一眼,看有没有对应标识的 Cell 可以复用,有的话直接拿来复用即可,没有就创建新的 Cell 。


代码实现

 // cell 的重用

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *cellID = @"carCell";


    // 在缓存池中查看是否有可复用的 cell ,有的话取出来,如果没有,创建 cell

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];

    if (!cell) {

        cell = [[UITableViewCell allocinitWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];

    }

   return cell;

}


补充知识 static

static 指定局部变量为静态局部变量,这里使用 static ,是因为希望在函数中局部变量的值在函数调用结束后不消失,保留原值以供下次使用。

利用了它的一个特点:在整个程序的运行过程中,局部变量只占了一份内存

另一个特点:改变局部变量的生命周期,但不改变其作用域




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值