2

在我的应用程序中,我有一个UITableView显示相当大的图像并加载一个设计适中的Xib文件来显示它。每个图像的大小约为 700KB 到 1MB。流程几乎永无止境,随着我们向下滚动,它会加载越来越多。所以你可以想象我遇到了内存问题。

我试过使用SDImageCacheand NSCache。前者使用磁盘内存来缓存图像。在这两种情况下,缓存都不会自动清除图像。当我收到Received memory warning提示时,我必须手动清除它们。每次我清除这些缓存时,释放的内存似乎每次都更少。

现在我很困惑对于这么长的图像列表我必须使用哪种缓存策略。我可能在某处有泄漏吗?当我分析应用程序时,它们当然没有出现。

PS:我正在从网络加载图像。只是要清楚。

4

2 回答 2

1

从文档:

UIImage 

+(UIImage *)imageNamed:(NSString *)name

讨论 此方法在系统缓存中查找具有指定名称的图像对象,如果该对象存在,则返回该对象。如果匹配的图像对象尚未在缓存中,则此方法从指定文件加载图像数据,缓存它,然后返回结果对象。

所以我想把这个留给 UIImage 类是一个好方法。

希望这可以帮助!

于 2013-09-26T23:24:05.543 回答
0

正如我们在 Android 和 iOS 中实现的那样:一次只能在屏幕上显示 2-3 张图像。向下滚动加载 2 个内存,向上滚动加载 2 个内存。所以你在内存中有 7 张图像。显示它们。其他图像必须存储在文件中(当您下载它们时)。如果用户滚动太快,不要显示所有图像序列,而是显示一些“加载”图标来代替图像。当滚动停止时,显示适当的图像 + 上一个 + 下一个 + 准备 2 个(向上滚动)和 2 个向下滚动。

于 2013-09-26T23:24:43.677 回答