【问题标题】:When are files from NSCachesDirectory removed?什么时候从 NSCachesDirectory 中删除文件?
【发布时间】:2011-10-16 07:54:54
【问题描述】:

iOS NSCachesDirectory 中的文件在什么情况下会被删除?显然,删除并重新安装应用程序。应用升级呢?磁盘空间不足怎么办?还有什么?

【问题讨论】:

  • 仅供参考:我认为我的错误是别的东西,所以 AFAIK 对上述问题的回答是“在应用程序删除之外,从不”。

标签: iphone ios caching filesystems


【解决方案1】:

我们的经验是,此文件夹会在应用更新时被清除。很高兴知道这个文件夹究竟什么时候可以被清除。文档将此文件夹描述为

可丢弃缓存文件的位置(库/缓存)

NSDocumentDirectory 不会在应用程序更新时被清除,但请小心使用此文件夹,因为 iOS 5 现在使用此文件夹在 iCloud 中备份,如果您使用此目录存储用户以外的任何内容,您的应用程序可能会被拒绝生成的内容。

【讨论】:

  • 确认使用 NSDocumentDirectory 存储非用户生成内容的应用将被拒绝。
  • 我还可以确认 Apple 确实检查了这一点。如果您需要在 NSDocumentDirectory 中存储可以重建或下载的文件,请确保将它们标记为在备份期间跳过。苹果确实允许这样做。
  • @Ciryon 可以将图像存储在用户在相机胶卷中选择的 NSDocumentDirectory 中吗?
  • @respectTheCode,您能否解释一下您的评论。我使用 NSDocumentDirectory,有点害怕我的应用程序被拒绝。将它重定向到 NSCache 文件夹中会很好吗?
  • NSDocumentDirectory 只能用于用户创建的内容或无法重新创建或下载的内容。
【解决方案2】:

App 更新期间 iOS 不会删除 Library 文件夹中的任何内容。

请查看 Apple 提供的以下文档,其中提到:

当用户下载应用更新时,iTunes 会在新的应用目录中安装更新。然后它将用户的数据文件从旧安装移动到新的应用程序目录,然后再删除旧安装。以下目录中的文件保证在更新过程中保留

Application_Home>/文档

Application_Home>/库

虽然其他用户目录中的文件也可能被移动,但您不应依赖它们在更新后存在。

这里是该文档的链接: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html#//apple_ref/doc/uid/TP40007072-CH8-SW10

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    NSCachesDirectory 可以在内存不足的情况下删除

    在 iOS 5.0 及更高版本上,系统可能会删除 Caches 目录 很少有系统磁盘空间非常低的情况。这会 应用程序运行时永远不会发生。但是,您应该知道, iTunes 恢复不一定是唯一的条件 可以擦除缓存目录。

    more info

    如果您不想删除您的文件,您必须将它们存储在 Documents 目录中,但是这样:

    使用“不备份”属性指定应保留在设备上的文件,即使在存储空间不足的情况下也是如此。将此属性用于可以重新创建但即使在存储空间不足的情况下也需要保留的数据,以便您的应用程序正常运行,或者因为客户希望它在离线使用期间可用。此属性适用于标记的文件,无论它们位于哪个目录,包括 Documents 目录。这些文件不会被清除,也不会包含在用户的 iCloud 或 iTunes 备份中。由于这些文件确实使用设备上的存储空间,因此您的应用程序负责定期监控和清除这些文件。

    more info

    【讨论】:

    • 可以在应用运行时删除 NSCachesDirectory 吗?当应用程序在后台运行时? (我有一个后台音频应用程序,因此它可以在后台运行时主动从库/缓存中读取。)
    • 我不知道,他们只说在内存不足的情况下,所以如果您正在使用该应用程序并收到内存警告,它可能会从缓存中删除内容。请注意,它只会在 iOS 5.0.1 或更高版本中删除它们。无论如何,最好的办法是将不想被删除的文件存储在 NSDocumentsDirectory 或 NSApplicationSupportDirectory
    • 内存不足或磁盘空间不足?
    • 更新了信息,它说“磁盘空间非常低”,它向用户显示一个警报,告诉他没有可用空间。
    猜你喜欢
    • 2012-03-30
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2014-10-06
    相关资源
    最近更新 更多