UITableView很慢

时间:2012-07-08 05:35:19

标签: uitableview

我有view我在其中拖了一个UITableView,还有2 UIImageView s(第一个显示背景图像,第二个显示非常小)图像顶部的标题与图像)。 他们都设置为weak属性。 tableView有495行,每个单元格中都加载了一个图像。 以下是配置单元格的代码:

- (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];


    UIView *bgColorView = [[UIView alloc] init];
    [bgColorView setBackgroundColor:[UIColor brownColor]];
    [cell setSelectedBackgroundView:bgColorView];

    return cell;
}

我使用segue s,所以我不需要委托方法。 (也与这个问题无关)。 问题是,滚动顺畅;但是如果我滚动太快那么它会变慢并可能导致应用程序崩溃。加载到单元格中的png图像不是大尺寸,每个大小约为5KB。似乎出列的工作没有有效地完成;因为它变慢,显示内存警告消息,然后发生崩溃。 我能做些什么吗? (视图中没有其他内容)

更新:我也尝试删除这部分代码:

UIView *bgColorView = [[UIView alloc] init];
[bgColorView setBackgroundColor:[UIColor brownColor]];
[cell setSelectedBackgroundView:bgColorView];

没用!

2 个答案:

答案 0 :(得分:4)

UIImage imageNamed缓存您的图像,永远不会释放内存,这可能是导致内存警告和崩溃的原因。处理大量图片时,最好以其他方式加载图片,例如imageWithContentsOfFileimageWithData

答案 1 :(得分:0)

尝试在setImage命令后释放图像。这有帮助吗?