我有几个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,尽管我自己还没有尝试过。