-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString * mealCell = @"MealTableViewCell";
VASMealTableViewCell *cell = nil;
if(cell == nil){
NSArray *nibArr = [[NSBundle mainBundle] loadNibNamed:@"MealTableViewCell" owner:self options:nil] ;
for (id oneObject in nibArr){
if ([oneObject isKindOfClass:[VASMealTableViewCell class]]){
cell = [(VASMealTableViewCell *)oneObject initWithStyle:UITableViewCellStyleDefault reuseIdentifier:mealCell];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
}
}
cell.mealCellDelegate = self;
NSInteger index = indexPath.row;
NSInteger section = indexPath.section;
NSString * keyStr = [mealAllKeys objectAtIndex:section];
NSArray * mealArr = [self.dataDic objectForKey:keyStr];
VASMealInfo * mealInf = [mealArr objectAtIndex:index];
[cell setShowStyleWithInfo:mealInf];
UIButton * bgBtn = [[UIButton alloc] initWithFrame:cell.mealImageView.frame];
[cell addSubview:bgBtn];
[bgBtn addTarget:self action:@selector(mealImageSingleTap: event:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
看上面代码有问题没,咋一看,好像没问题。
只是,如果在老设备上面,反复快速刷新cell,就很可能出现应用卡死现象了。我的血淋淋的经验。这个不用cell太多就能产生卡死显示,如果cell有很多很多的话,体验差的程度就可想而知了。
因为 [cell addSubview:bgBtn] ,每次都会执行,占用内存较多。