好久不写ios了,最近做了一个ios项目,做过ios的人都知道,tableview基本每个人都会用到,也都会重写。
今天在使用多个样式的tableview的使用,偷了个懒CV一下,本来应该同一页面本来是同一个cell,结果同一个页面出现了不同的cell。
终于发现是因为cell的缓存池问题,我们都知道tableview为了避免重复创建cell的问题,使用了缓存池机制,也就是一个屏幕最多会展示几个cell,那么tableview就会创建几个cell,然后重复利用,也就是
static NSString *ID = @"FlishTableViewCel";
FlishTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (!cell) {
cell = [[FlishTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
关键就出现在了
static NSString *ID = @"FlishTableViewCel";
我把两个cell的ID写成了一个。
所以先加载的会先存储在缓存池中,后加载的会先从缓存池中拿出cell,当数量不够了才会创建新的cell。