gpt4 book ai didi

UITableView 很慢

转载 作者:行者123 更新时间:2023-12-04 18:17:27 29 4
gpt4 key购买 nike

我有一个 view我拖了一个UITableView在里面,还有 2 UIImageView s(第一个显示背景图像,第二个只是在 View 顶部显示一个非常小的标题和图像)。
它们都设置为 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,所以我不需要委托(delegate)方法。 (这也与这个问题无关)。
问题是,滚动很流畅;但是,如果我滚动得太快,它就会变慢,并可能导致应用程序崩溃。加载到单元格中的 png 图像尺寸不大,每个大约 5KB。似乎出队工作没有有效地完成;因为它变慢了,显示内存警告消息,然后发生崩溃。
我能做些什么吗? ( View 中没有其他内容)

更新:我也试过删除这部分代码:
UIView *bgColorView = [[UIView alloc] init];
[bgColorView setBackgroundColor:[UIColor brownColor]];
[cell setSelectedBackgroundView:bgColorView];

没用!

最佳答案

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

关于UITableView 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11380921/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com