原理
- 启动程序时, 建立整屏幕的单元格内存空间;
- cell表格滑动时, 把滑倒屏幕之外单元格(不用的单元格)放入队列;
- 出现的新单元格, 则是从队列中取出(通过复用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;
实用篇:原理讲了那么多,讲点应用吧。
- 如果你想在所有的cell中添加一个按钮,你是应该在if中添加,还是应该在if之外添加呢?毫无疑问,应该在if中.
结论:
对于界面的定制,放在if中比较好,一个cell中只创建一次;
对于数据的定制,放在if外面比较好,对于不同的cell,表示不同的内容,虽然只有12个cell,但是cell中存放的数据我可以任意的映射。
如果你得出了这个结论,那么如果在加上textField,label等其他控件你也可以搞定。
你不仅仅需要知道怎么用, 更重要的是你需要理解其中的原理。