iOS - UITableView崩溃

时间:2012-07-06 10:13:26

标签: objective-c ios uitableview didreceivememorywarning

我将图片加载到UITableViewCell中。图像尺寸不大 - 每个图像可能只有6 KB。

但是有500行。当我滚动时,它首先开始缓慢并给我内存警告消息,但是经过几次滚动后,应用程序崩溃了。我也使用了乐器,它表明滚动时内存使用量越来越高!可能是因为dequeueReusableCellWithIdentifier:CellIdentifier工作不正常,或者我应该以某种方式“弄清楚”图像?!

顺便说一下,我已经关闭了设备上的所有其他应用程序,我的iPod Touch上有超过1.5 GB的免费应用程序。

以下是配置单元格的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    int cellNumber = indexPath.row + 1;
    NSString *cellImage1 = [NSString stringWithFormat:@"c%i.png", cellNumber];
    UIImage *theImage = [UIImage imageNamed:cellImage1];

    [cell.imageView setImage:theImage];

    return cell;
}

1 个答案:

答案 0 :(得分:0)

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)
{
    cell = [[UITableViewCell alloc] 
            initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:CellIdentifier];
}

UITableViewCell *cell = [[UITableViewCell alloc] 
                         initWithStyle:UITableViewCellStyleDefault 
                         reuseIdentifier:CellIdentifier];

这里发生了什么?你要重新分配两次相同的内存。