iOS内存消耗完毕导致应用卡死

-(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] ,每次都会执行,占用内存较多。

你可能感兴趣的:(iOS内存消耗完毕导致应用卡死)