【问题标题】:Whats really going on during an iOS App update?iOS App 更新期间到底发生了什么?
【发布时间】:2011-12-14 05:52:17
【问题描述】:

我有一个简单的应用程序,它从网络服务下载一些数据并将其显示在表格视图中。为了允许离线访问,应用程序将此数据缓存在设备本身的缓存目录中。我保留了所有缓存文件的列表以供参考,并将其保存到缓存目录中。所以在所有下载完成后,我有以下文件:

XMLFileList
XML1
XML2
...

我几周前推出了这个应用程序,此后不得不发布一些必要的小更新来修复一些小错误。然而,当用户在他们的设备上更新应用程序时,他们似乎不再看到下载的资源。通过应用商店更新,然后加载调试版本,我设法在开发设备上实现了这一点,并确定了以下问题

它似乎没有显示下载文件中的数据,因为它们不再存在。它也不会重新下载文件,因为它们显示在保存的列表中。这提供了一个相当有趣的问题:为什么缓存的 XML 文件被删除了,而主列表却没有?

在应用更新期间幕后究竟发生了什么,我可以解释或重现以确保这种情况不会继续发生?

【问题讨论】:

    标签: ios caching


    【解决方案1】:

    如果您将文件放入 /Library/Caches(或其他任何位置),则无法保证下次运行应用时这些文件会存在。但是,您放入 /Documents 的任何内容都将在那里。事实上,/Documents 中的任何内容也会备份到 iCloud(除非您在 iOS 5.0.1 中设置了新的位,允许您选择不备份 /Documents 中的文件。)

    无论如何,重点是您应该阅读 Apple 的文档,了解您应该将哪些文件放在哪里。 (我四处寻找正确的参考没有成功;不过我以前见过。)归结为:用户生成的任何东西都应该放在 /Documents 中,任何可以从服务器重新获取的东西都应该放在 /库/缓存可能会被操作系统清除

    【讨论】:

    • 是的,这就是我所害怕的。现在如何再次保存它,以便只有应用程序可以访问这些文件?
    • 将它们放在 /Documents 中(在 iOS 5.0.1 下可能将它们标记为不备份),或者让您的应用能够根据需要重新下载。
    【解决方案2】:

    不保证会保留缓存目录内容。但我没有看到任何书面保证可以一次性清除整个目录。 (也许只有最大和/或最古老的内容或类似的内容?)

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      相关资源
      最近更新 更多