UITableView的重用机制
2012-05-23 11:13
253 查看
UITableView通过重用单元格来达到节省内存的目的:通过为每个单元格指定一个重用标识符(reuseIdentifier),即指定了单元格的种类,以及当单元格滚出屏幕时,允许恢复单元格以便重用.对于不同种类的单元格使用不同的ID,对于简单的表格,一个标识符就够了.
假如一个TableView中有10个单元格,但是屏幕上最多能显示4个,那么实际上iPhone只是为其分配了4个单元格的内存,没有分配10个,当滚动单元格时,屏幕内显示的单元格重复使用这4个内存,以下代码用于测试内存的使用:
通过运行此代码 会发现实际上分配的Cell个数为屏幕最大显示数, 当有新的Cell进入屏幕时,会随机调用已经滚出屏幕的Cell所占的内存,这就是Cell的重用
假如一个TableView中有10个单元格,但是屏幕上最多能显示4个,那么实际上iPhone只是为其分配了4个单元格的内存,没有分配10个,当滚动单元格时,屏幕内显示的单元格重复使用这4个内存,以下代码用于测试内存的使用:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCellStyle style = UITableViewCellStyleSubtitle; static NSString *cellID = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:style reuseIdentifier:@"cell"] autorelease]; cell.detailTextLabel.text = [NSString stringWithFormat:@"Cell %d",++count]; //当分配内存时标记 } cell.textLabel.text = [NSString stringWithFormat:@"Cell %d",[indexPath row] + 1]; //当新显示一个Cell时标记 return cell; }
通过运行此代码 会发现实际上分配的Cell个数为屏幕最大显示数, 当有新的Cell进入屏幕时,会随机调用已经滚出屏幕的Cell所占的内存,这就是Cell的重用
相关文章推荐
- UITableView的重用机制
- UITableView的重用机制
- UITableView 以及 UITableViewCell 的重用机制
- UITableView的重用机制
- UITableView的重用机制
- UITableviewCell的重用机制
- iOS UITableViewCell重用机制避免重复显示问题
- UITableView的禁用重用机制
- UITableviewcell重用机制以及解决重绘出现的重叠现象
- UITableViewCell的重用机制
- ios UItableView,UITableViewHeaderFooterView分组头部的重用机制,简单地仿射变换CGAffineTransform
- UITableView中Cell重用机制导致内容重复解决方法
- UITableView中Cell重用机制导致内容重复解决方法
- ios 重用UITableViewCell created from a XIB
- UITableViewCell的重用机制原理
- tableView的重用机制
- 【进阶android】ListView源码分析——ListView的重用视图机制
- 实现自己的可重用拦截器机制
- iOS关于UITableViewCell的重用机制
- 操蛋的UITableView重用机制