在我们的iOS应用中,我们在资源包中有近一百个图像文件。现在我们想让它们基于网络,因为图像可能随时改变(更新/不再需要/添加)。我们正在讨论什么方法是最优的。根据我的阅读,我了解资源包在设备上是不可编辑的。因此,当我启动应用程序时,我将从服务器检查是否有任何图像更新。如果是这样,我将下载更改的图像,然后将它们保存到文档目录。然后在应用程序中,对于每个图像,我基本上必须检查它是否在资源包中,然后从那里抓取它。否则从文档目录中选择并显示它。
另一种方法是我在资源文件夹中没有任何内容,我从服务器上下载应用程序启动时的所有图像并将它们存储到文档目录然后再打开,在后续应用程序启动时下载更改的文件。如果图像存在与否,我将取消对资源文件夹的检查,并且我的应用程序包大小将减少。
第三种方法是在首次启动时将文件从我的资源目录复制到文档目录,然后从文档目录继续。
对于什么是更好的方法或所有方法的任何建议,从性能的角度来看都是类似的?
答案 0 :(得分:0)
不用担心,性能不会成为问题,除非您使用特别不明智的图像查找算法。
对于如此少量的文件,文件系统遍历应该非常快。
答案 1 :(得分:0)
IMO,选项三在消除不必要的代码和预加载尽可能多的数据之间提供了最佳平衡。当应用程序第一次启动时,您不希望让用户等待100个图像下载,因此尽可能多地预加载。复制代码很简单,只能使用一次。因此,这消除了您必须对其他选项进行的运行时检查。
答案 2 :(得分:0)
在自己实现某些功能之前,我建议您先查看现成的图像缓存。即来自EnormEgo的EGOImageView。
我在几个依赖于从URL抓取图像的应用程序中使用过它。它可以为您处理所有事情,您只需设置一个“背景”图像即可显示,同时在后台抓取基于URL的图像。第二次使用它时,它立即可用。绝对得到了我对易用性的投票......
P.S。它可以免费使用