我打算从服务器缓存图像,并在我的应用程序中将其显示为排序幻灯片。我将异步加载图像。
我有两个选择:
哪一个更好?
如果您对缓存图片有任何建议,请与我们联系。
答案 0 :(得分:8)
你的第二种方法有两个主要缺陷:
我建议您在下载文件后立即将图像保存到文件中,并在内存中保存合理数量的图像,无需显示延迟(在需要时加载额外图像并处理不必要的图像)
答案 1 :(得分:4)
我会推荐你第一个选择。让您更具灵活性,例如:当数据大小增加内存大小时。
答案 2 :(得分:4)
我这样做:拥有一个带有缓存图像的NSMutableDictionary(作为UIImage对象)。如果图像不在缓存中,请查看它是否可用作文件。如果它不能作为文件使用,请加载它,将其放入字典中并将其写入文件。
至于将文件写入的 :您可以使用NSTemporaryDirectory()或在NSLibraryDirectory内创建一个目录(使用NSSearchPathForDirectoriesInDomains找到它)。后者的优点/缺点是它将在iTunes备份中(无论这是否优势取决于用例)。使用Library目录是Apple推荐的备份数据的方式,但不会出现在iTune的文件交换中(Documents目录)。
答案 3 :(得分:2)
我已经开始使用EGOImageView来处理我的缓存;它非常通用,可以为您处理复杂的缓存。
它非常适合通过http提取图像,你可以在EGO开发者网站上找到它
答案 4 :(得分:2)
对于iOS平台上的图像缓存解决方案,您可能需要考虑以下网址提供的SDWebImage框架:https://github.com/rs/SDWebImage。它很容易集成并处理您所有的图像缓存担忧:详细了解在此工作:https://github.com/rs/SDWebImage#readme
我们最近为我们的应用选择了它,效果很好。