单个与多个UIImage缓存

时间:2017-04-07 15:58:18

标签: ios objective-c caching uicollectionview uiimage

我正在制作一款应用程序,其中包含大量高分辨率图像,这些图像根据选择的选项卡在各种集合视图中初始显示,类似于Instagram。即使所有图像都带有应用程序,我发现在一个简单的NSMutableDictionary中异步缓存UIImages,而不是每次重新加载它们,加快了收集视图UI的速度。现在我有一个图像缓存来处理应用程序中的所有图像,即使它们分布在多个视图控制器/集合视图上并且具有各种大小。如果这些视图控制器中的任何一个获得内存警告,则清除缓存。

我的问题是:这是一个理想的设置,还是为每个只处理其各自集合视图中的图像的视图控制器提供单独的图像缓存更有意义?我的想法是这样的,如果视图控制器#3获得内存警告,只有它的图像缓存将被清除,允许视图控制器#1和#2保持其流畅的UI。

1 个答案:

答案 0 :(得分:0)

当你想要缓存某些内容时,有一些更好的东西,正确的对象是NSCache,它可以作为字典,但它有很多优点:

  

NSCache类包含各种自动驱逐策略   确保缓存不会占用太多的系统内存。如果   其他应用程序需要内存,这些策略会删除一些内存   缓存中的项目,最小化其内存占用。
您可以添加,   从不同的线程中删除和查询缓存中的项目   必须自己锁定缓存。
与NSMutable词典不同   对象,缓存不会复制放入其中的关键对象。

关于你的问题我认为没有具体的答案。如果您正确管理缓存,则只能使用一个,但我会为我使用的每个集合视图创建一个,以避免共享信息。