对于软件开发,表格视图是一个十分重要的UI视图。在iOS中,表格视图由UITableView这个类来提供支持。UITableView内部封装了一套复用机制,通过复用,开发者可以高效第展示数据量非常大的列表而不用担心内存方面的问题。
UITableView对其中cell的复用采取复用池的设计模式。例如,一个表格视图有100行数据,视图上每屏可以显示10行数据,那么UITableView实际上创建其上cell视图的时候只需创建11个cell视图即可够用,当cell被滑出屏幕外则它被收进复用池,新的cell将要滑入屏幕时从复用池中取用。
在实例化cell之前添加以下三个步骤:
1.声明一个标识符:
// static 避免多次分配内存
static NSString *identifier = @"cell";
2.创建cell时,先到复用池中去找
// 1. 到缓存池中去找cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
UITableView类的dequeueResableCellWithIdentifier:方法相当于从复用池中取出cell。
3.判断是否取到,如果没有,则实例化新的cell
if (nil == cell) {
// 实例化tableViewcell
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
}