我有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];
没用!
答案 0 :(得分:4)
UIImage imageNamed
缓存您的图像,永远不会释放内存,这可能是导致内存警告和崩溃的原因。处理大量图片时,最好以其他方式加载图片,例如imageWithContentsOfFile
或imageWithData
。
答案 1 :(得分:0)
尝试在setImage
命令后释放图像。这有帮助吗?