我有几个UITableViews异步加载图像和来自Internet的文本。我想缓存图像以提高性能。

最好的是:

* Using NSURLRequest and cachePolicy?
* Saving the image to file system?


对于NSURLRequest和cachePolicy情况,如果我不想使用它们,该如何清理图像。

最佳答案

NSURLRequest应该可以使用默认的缓存策略正常运行,只要每次运行仅加载一次图像即可(即,将其缓存在内存中)。不过,iPhone不会将数据缓存到磁盘。

在这一点上,文档有些冲突。例如,NSURLCache initWithMemoryCapacity:diskCapacity:diskPath上的文档说,iOS上的diskPath应该是存储磁盘缓存的子目录的名称。

但是关于NSURLCacheStoragePolicy的文档说:


  重要提示:iOS会忽略此缓存
  政策,而是将其视为
  NSURLCacheStorageAllowedInMemoryOnly。


根据实际测试,似乎是后者。因此,无论您设置了什么选项,您都不会(当前)在iOS上缓存到磁盘。因此,如果您希望图像在两次运行之间保持一致,则需要将其保存到文件系统中。

有些人为此目的推荐了https://github.com/rs/SDURLCache,尽管我自己还没有尝试过。

09-30 18:03
查看更多