在iPhone App中缓存/保留下载图像的策略

时间:2012-07-16 03:01:46

标签: iphone objective-c image caching download

我的应用程序需要从我正在维护的在线MySQL数据库中下载大约50张图像。我知道我可以控制它们使用缓存的方式(例如):

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:aURL] 
                                         cachePolicy:NSURLRequestReturnCacheDataElseLoad 
                                     timeoutInterval:30.0];


但是:
1)使用此缓存策略是否意味着图像在第一次下载后将真正永远保留在用户的设备上? OR,
2)我最好手动将它们自己保存到应用程序的Documents文件夹中(也许同时将数据库写入那里以在线镜像一个)以确保它们的持久性 - 这样我就可以从那里加载它们(设备的Documents文件夹)从那时起,在应用程序的所有后续运行中?
基本上只需要建议在最初下载后将图像保存在用户设备上的最佳方法 - 因此用户总是有某些来查看,以防连接问题阻止他们抓住任何东西新图像已添加到在线数据库中。

任何和所有建议都将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

NSURLCache为下载的请求使用内存和磁盘缓存。我记得在iOS 5之前存在问题导致像SDURLCache这样的独立库,但我认为不再需要它们了。

即使使用磁盘缓存,当设备上的空间不足时,它仍可能被iOS清除。如果您不希望这种情况发生,您可以将自己的图像存储在Documents文件夹中......但这种情况就是Caches目录的用途。您下载图像,它们会挂起,除非设备空间不足,在这种情况下,它们会被清除并根据需要重新下载。如果我是该应用程序的用户,我宁愿这种行为永久占用磁盘空间,以便从网络中轻松恢复。