2017-04-07 31 views
0

我正在制作一个应用程序,它包含许多高分辨率图像,这些图像根据选择哪个选项卡在各种集合视图中初始显示,类似于Instagram。即使所有图像都带有应用程序,但我发现在一个简单的NSMutableDictionary中异步缓存UIImages,与每次重新加载它们相反,都会加快集合视图UI的速度。现在我有一个图像缓存可以处理应用中的所有图像,即使它们分布在多个视图控制器/集合视图中,并且具有各种大小。如果这些视图控制器中的任何一个出现内存警告,则清除缓存。单个vs多个UIImage缓存

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

回答

0

也有一些是当你希望缓存更好的东西,合适的对象为NSCache,它可以作为一个字典,但它有很多优点:

的NSCache类整合各种自动驱逐政策,其中 确保缓存不会使用太多的系统内存。如果其他应用程序需要内存 ,则这些策略会从缓存中删除一些 项目,从而最大限度地减少其内存占用量。
您可以添加, 删除,并从不同的线程查询缓存中的项目,而不需要 必须自己锁定缓存。
与NSMutable Dictionary 对象不同,缓存不会复制放入其中的关键对象。

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