创建一个单元格cell ,从逻辑上来说,我们可以有三种方式:如下 (推荐使用第三种)
//方式1 :原始方式方式1是每移除一个,就创建一个cell,会不停的创建,性能低,总有内存爆满的时候,会崩溃,所以这种方式不妥,如下:
UITableViewCell*cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:nil];
//方式2:如刚好一个页面有8个cell,一启动会创建8个,当滚动一点点的时候,第一个没有进缓存池,而第9个已经出来了,这个时候又多了一个cell,这种方式至少会创建9个,如果是ABAB型的,还会有第10个,也有点不妥,如下:
UITableViewCell*cell = [tableView dequeueReusableCellWithIdentifier:ID];
if(cell ==nil) {
cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:ID];
}
//方式3:这种方式是最好的,如,也是ABAB类型的,到缓存池里面找和创建cell是一步搞定,底层是直接就写好了的,但注意,这里需要在启动程序的时候注册一个cell,也就是在viewDidLoad里面,这种方式也是最好的,对于性能的优化是最恰当的,所以推荐用这种!!
UITableViewCell*cell = [tableView dequeueReusableCellWithIdentifier:ID forIndexPath:indexPath];
//此时,当一个cell从屏幕滚出去以后,不会销毁,而是放到了"缓存池"中;
这个方法需要先注册一个cell,如下:
#pragma mark ----viewDidLoad设置数据源对象
- (void)viewDidLoad {
[superviewDidLoad];
//注册一个cell
[self.tableViewregisterClass:[UITableViewCellclass]forCellReuseIdentifier:ID];
}
——>
这里为方法3注册的一个cell,便于方式3调用;要用这种方法,必须要先注册一个cell 在viewDidload 里面注册,注册就是告诉系统,我们用的ID到底是什么类型的cell,
<——