gpt4 book ai didi

ios tableview 图像不释放内存

转载 作者:行者123 更新时间:2023-11-29 04:45:21 38 4
gpt4 key购买 nike

简单场景: TableView Controller ,有 5000 行。我有 5000 个图像名称,从 0.png 到 4999.png。

这是我的 cellForRowAtIndexPath: 方法:

静态 NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSString *string = [NSString stringWithFormat:@"%d",indexPath.row];
UIImage *img = [UIImage imageNamed:string];

if (img) {
cell.imageView.image = img;
} else {
cell.imageView.image = [UIImage imageNamed:@"NoPhotoDefault"];
}
return cell;

我分析了仪器的行为,它表明实际内存使用量在滚动时快速上升,并且永远不会下降。

它从大约 8 MB 开始,到达最后一行时达到 200 MB。

我在这里缺少什么?

谢谢

附言Proj基础sdk是5.0,并且使用ARC。

稍后编辑,在后台发送应用程序时,内存被释放。

最佳答案

当您使用方法 imageNamed: 时,

UIImage 会缓存图像。它确实是为了避免在多次使用时重新加载同一张图像。

This method looks in the system caches for an image object with the specified name and returns that object if it exists. If a matching image object is not already in the cache, this method loads the image data from the specified file, caches it, and then returns the resulting object.

如果您想避免缓存图像,请改用 imageWithContentsOfFile:

This method does not cache the image object.

关于ios tableview 图像不释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9738664/

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