应用程序更新中是否清楚<Application_Home>/Library/Caches?

fba*_*ipe 23 filesystems iphone

在我的iPhone应用程序中,我正在缓存一些压缩文件的原始数据以节省加载时间.但是这些文件可能会在更新中发生变化.

当应用程序更新或我需要自己清除时,iOS清除/库/缓存吗?

Tho*_*mas 48

短:

Will iOS clear /Library/Caches for me when the app is updated 没有

iOS是否可以Application_Home/Library/Caches在更新期间清除所有内容或部分内容?

or I need to clear it myself? 您需要确保清除要清除的内容.

为这两种情况做好准备.

你怎么知道你的应用程序是否有更新?请参阅iOS应用程序更新测试

长:

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

  • APPLICATION_HOME /文档
  • APPLICATION_HOME /库

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

从Apples文档:应用程序运行时环境 - 备份和还原

Application_Home/Library/Caches使用此目录编写要在应用程序启动之间或应用程序更新期间保留的任何特定于应用程序的支持文件.您的应用程序通常负责添加和删除这些文件.它还应该能够根据需要重新创建这些文件,因为iTunes会在完全恢复设备期间删除它们.在iOS 2.2及更高版本中,iTunes不会备份此目录的内容.

从Apples文档:应用程序运行时环境 - 文件系统(daveoncode)

这是一个在"更新"期间清除缓存的示例:安装app X V1.0.午餐一次,开始做其他事情.iOS出现故障,需要恢复.开发人员发布V1.1.您在Mac上的iTunes中更新应用程序.您可以通过iTunes恢复设备.iTunes安装V1.1.用户午餐你的应用程序.您的应用程序未收到任何相关内容的通知,但所有文件Application_Home/Library/Cache都已消失(iTunes removes them during a full restoration of the device).

那里真正重要的信息:It should also be able to re-create these files as needed.像肯德尔一样也指出它是一个缓存,因此操作系统可以在任何时候从中删除文件.因此,每次从您加载任何文件时Application_Home/Library/Caches都必须考虑到该文件不再存在的情况(Kendall触及了这一点).

NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
if(![fileManager fileExistsAtPath:[cachePath stringByAppendingPathComponent:@"myfile.zip"]]) {
    //create it, copy it from app bundle, download it etc.
}
//start using it
Run Code Online (Sandbox Code Playgroud)


Ano*_*mie 10

为了安全起见,您应该自己清除它.似乎没有任何文件说明它会被清除,所以即使现在这样做你也不能指望它继续这样做.