创建一个单元格cell的一些小理解

创建一个单元格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,

<——

你可能感兴趣的:(创建一个单元格cell的一些小理解)