我的应用程序处理大量图像下载,因此我希望它对用户来说尽可能快。优选地,当图像下载时,它不应该再次下载。
我最初的策略是将所有内容保存UIImages
在一个 中NSArray
,但最终这会消耗大量内存/RAM。
然后我想到了使用NSCache
,如果内存使用率过高,它会自动删除项目。我的问题是,一旦它删除了该项目,下次我需要它时我必须重新下载该图像。
似乎我最好的解决方案是(如果我完全错过了更好的东西,请告诉我)将它们保存在NSCache
样式解决方案中,并且在NSCache
删除项目时将其保存到磁盘。因此,下次需要时不需要重新下载,即使缓存将其删除,从磁盘获取它仍然比从服务器获取它更快。
我很好奇像SDWebImage这样的库——我知道它使用缓存,所以图像不会被多次下载——使用这样的解决方案,或者它们更像NSCache
是当内存使用率过高时图像会消失的地方,以及需要重新下载。(只是,一旦应用程序完成执行,我不希望它再留在磁盘上。)
我看这完全错了吗?我应该做一些完全不同的事情吗?