iOS中最佳图像缓存策略

时间:2013-09-26 23:19:03

标签: ios uitableview caching uiimage nscache

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

我尝试过使用SDImageCacheNSCache。前者使用磁盘存储器来缓存图像。在这两种情况下,缓存都会以某种方式自动清除图像。当我收到Received memory warning提示时,我不得不手动清除它们。每次我清除这些缓存时,释放的内存似乎随后都会减少。

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

P.S。:我正在从网上加载图片。只是要清楚。

2 个答案:

答案 0 :(得分:1)

来自文档:

UIImage 

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

讨论此方法在系统缓存中查找图像对象   使用指定的名称并返回该对象(如果存在)。如果一个   匹配的图像对象尚未在缓存中,此方法加载   来自指定文件的图像数据,缓存它,然后返回   结果对象。

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

希望这有帮助!

答案 1 :(得分:0)

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