UITableViewCell 重用机制

UITableViewCell的重用机制特别的巧妙,至今学习了一番,才知道自己以前学习的是多么的肤浅.  温习一遍之后,又学习到了不少的知识.  UITableView 里面有两个结构,一个是NSMutableArray可变数组类型的显示当前的visiableCells,该数组保存的是当前iPhone屏幕当前显示的cells,一个是NSMutableArray可变数组类型的可重用的resuableTableCells.,这个数组里面保存的是可重用的cells.

  1. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
  2.   static NSString *CellIdentifier = @"Cell";  
  3.   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];  
  4.   if (!cell) {  
  5.     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];  
  6.   }
  7.    return cell;  
  8. }
刚开始TableView中得resuableTableCells是空的,这时重用标识tableView dequeueReusableCellWithIdentifier:CellIdentifier;  返回的cell为nil,  第一次时就会走
  •     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 通过alloc来创建cell.重用机制大大的减少了内存的开销,并不是说1000条数据我们就要创建1000个cell,那样太浪费资源.   iPhone屏幕默认会显示一屛的cell.

    第一:这时候倘若显示10个cell,都是通过alloc出来的,当我们创建好cell之后并指定同样的重用标识符. 10个cell就会被全部的加入到当前显示的visiableCells数组中,此时可重用的resuableTableCells还是为nil;

    第二步:向上滑动屏幕,当cell1完全的移出屏幕,cell11(也是alloc出来)完全显示出来的时候. cell11就会加入到visiableCells,当cell1移出visiableCells后,cell1就会加入到resuableTableCells数组中.

    第三步:因为resuableTableCells里面已经有值了,所以之后显示的新cell,就会调用cellForRowAtIndexPath,这时就会返回cell1.cell1加入到visiableCells,cell1移出resuableTableCells,cell2移出visiableCells,cell2加入到热塑ableTableCells.实现cell的重用.







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值