关于TableViewCell的重用机制

 static NSString *CellTableIdentifier = @"CellTableIdentifier ";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc]
                 initWithStyle:UITableViewCellStyleDefault
                 reuseIdentifier:CellTableIdentifier] autorelease];
}

以下是我自己对cell 的重用的理解,给大家分享:
先说一下重用是如何实现的,加入我们有一个很长的tableview,假设是100行,但在我们设计的行高情况下,屏幕只能显示4行,所以,当加载view的时候,实际我们需要创建5各cell,只这4个cell是静态显示,当我们用手指向上滑动即下方的第5个cell向上滑进界面的过程中,我们发现第一行的cell会滑出界面,当滑出后,第一行这个cell对象会被放到对应重用标示符重用队列中,第5行显示在屏幕上。当我继续向上滑动,第二行的cell对象同样会放在重用队列中,第6个cell将获得重用队列中的一个cell,这样,这样在后面的重用中就就可以正常的工作起来了,可以很好的控制内存。

简单的说,一行一行的cell都是在复用的,滑动tableview的时候,刚离开视图的 cell会被放到复用池中,等下一个cell需要显示时,会先看复用池中有没有cell 如果有的时候,就从复用池中拿出来cell,没有的话就重新创建cell 
static NSString *CellTableIdentifier = @"CellTableIdentifier ";
是重用标示符;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier];  
  • 意思是定义一个cell,在tableview中的可重用队列中寻找有CellTableIdentifier标识的UITableViewCell,以进行重用。
    这个Identifier可以由我们自由定义成一些字符串。当然,如果在队列中有这样的UITableViewCell,那么则返回它给 cell,若没有,则返回nil给cell。因为我们在写程序时经常需要用到好几个表格,每个表格中的cell布局都不一样,所以我们需要将在同一个表格的cell(布局一样)进行标记Identifier,这样,在重用的时候可以得到匹配的cell。当有多个表格是可以定义多个标记。
if (cell == nil) {
        cell = [[[UITableViewCell alloc]
                 initWithStyle:UITableViewCellStyleDefault
                 reuseIdentifier:CellTableIdentifier] autorelease];
  • 若返回的是nil,即cell==nil,则我们需要分配空间并初始化一个cell,而且需要关联reuseIdentifier,以便后面重用的时候能够根据Identifier找到这个cell
  • 若cell不为nil,则重用成功,并可return此cell。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值