UITableViewCell的复用原理

原理

  1. 启动程序时, 建立整屏幕的单元格内存空间;
  2. cell表格滑动时, 把滑倒屏幕之外单元格(不用的单元格)放入队列;
  3. 出现的新单元格, 则是从队列中取出(通过复用ID去识别)

直接上代码:

  /*UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];

NSLog(@"第%ld段,第%ld行",indexPath.section,indexPath.row);
通过打印可知,滑动表格时会一直开辟UITableViewCell空间,大量消耗内存

  • 下面上代码:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:rsuseID]; if (cell ==nil) { //判断如果还没有建立复用ID, 则开辟空间并建立复用ID cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:rsuseID]; } //config cell.. cell.textLabel.text = [NSString stringWithFormat:@"%ld个",indexPath.row]; cell.backgroundColor = [UIColor whiteColor]; return cell;

实用篇:原理讲了那么多,讲点应用吧。

  1. 如果你想在所有的cell中添加一个按钮,你是应该在if中添加,还是应该在if之外添加呢?毫无疑问,应该在if中.

结论:

对于界面的定制,放在if中比较好,一个cell中只创建一次
对于数据的定制,放在if外面比较好,对于不同的cell,表示不同的内容,虽然只有12个cell,但是cell中存放的数据我可以任意的映射。
如果你得出了这个结论,那么如果在加上textField,label等其他控件你也可以搞定。
你不仅仅需要知道怎么用, 更重要的是你需要理解其中的原理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容