在我的应用中,我有一个UITableView
,它显示相当大的图像,并加载一个设计合理的Xib
文件来显示它。每个图像的大小约为700KB到1MB。流量几乎永无止境,当我们向下滚动时,它会越来越多地加载。所以你可以想象我遇到了内存问题。
我尝试过使用SDImageCache
和NSCache
。前者使用磁盘存储器来缓存图像。在这两种情况下,缓存都会以某种方式自动清除图像。当我收到Received memory warning
提示时,我不得不手动清除它们。每次我清除这些缓存时,释放的内存似乎随后都会减少。
现在我对于必须使用哪种缓存策略这么长的图像列表感到困惑。我可能在某处发生泄漏吗?当我分析应用程序时,它们肯定没有显示出来。
P.S。:我正在从网上加载图片。只是要清楚。
答案 0 :(得分:1)
来自文档:
UIImage +(UIImage *)imageNamed:(NSString *)name
讨论此方法在系统缓存中查找图像对象 使用指定的名称并返回该对象(如果存在)。如果一个 匹配的图像对象尚未在缓存中,此方法加载 来自指定文件的图像数据,缓存它,然后返回 结果对象。
所以我想把它留给UIImage类是一个很好的方法。
希望这有帮助!
答案 1 :(得分:0)
正如我们在Android和iOS中实现的那样:一旦你在屏幕上只显示2-3张图片。 在内存中加载2个用于向下滚动,2个用于向上滚动。所以你在内存中有7张图片。显示它们。其他图像必须存储在文件中(下载时)。如果用户滚动太快,则不显示图像的所有序列,而是显示一些“加载”图标来代替图像。当滚动停止时,显示相应的图像+前一个+下一个+准备2个(向上滚动)和2个向下滚动。