基于iOS磁盘访问的恢复功能

基于iOS磁盘访问的恢复功能,ios,objective-c,xcode,data-recovery,Ios,Objective C,Xcode,Data Recovery,我正在尝试将一个基于硬盘的恢复功能编码到现有的iOS设备演示照片应用程序中。其思想是允许用户恢复上次应用的效果和所有效果,即使在重新启动应用程序/意外崩溃等之后 我正在将一个图像文件(应用于它的最新效果)保存到NSCachesDirectory中: NSData* data = UIImagePNGRepresentation(image); [data writeToFile:[self getFileAtIndex:getPath] atomically:YES]; 转到

我正在尝试将一个基于硬盘的恢复功能编码到现有的iOS设备演示照片应用程序中。其思想是允许用户恢复上次应用的效果和所有效果,即使在重新启动应用程序/意外崩溃等之后

我正在将一个图像文件(应用于它的最新效果)保存到NSCachesDirectory中:

     NSData* data = UIImagePNGRepresentation(image);
    [data writeToFile:[self getFileAtIndex:getPath] atomically:YES];
转到“恢复”选项时,将使用以下方法恢复在此路径保存的文件:

    image = [[UIImage imageWithContentsOfFile:[self getFileAtIndex:getPath]]retain];
代码在我的测试设备(iPhone4S)中运行良好。但不知何故,我怀疑这是否是编写恢复函数的最佳实践

进入现实世界的应用程序,如果东西存储在NSCachesDirectory中,您认为它会备份到iCloud吗?是否存在与其他应用程序冲突的可能性

对于同时访问NSCachesDirectory目录的多个应用程序,NSCachesDirectory目录是如何管理的

我想知道这样做的最佳实践


请提供帮助/评论。

正如Bonjour先生在评论中提到的,在iOS上,每个应用程序都有各自的文件系统,因此永远不会与其他应用程序发生冲突


缓存目录未在iCloud上备份,您不应该依赖缓存目录中的文件在整个启动过程中保持。您应该将缓存目录仅用于临时文件。若您只允许在一个会话期间进行恢复,那个么使用caches目录是可以的,但若您希望允许跨多个启动进行恢复,则应将它们存储在library/documents目录中。但请注意,苹果公司对文档目录中的文件存储有严格的审查政策,因为这会占用用户云存储空间

NSCachesDirectory未备份到云中。仅将文件导入NSDocumentDirecty。没有可能的冲突,因为所有应用都有自己的NSCachesDirectory/NSDocumentDirecty等。但是如果我使用NSDocumentDirectory,备份文件将在iCloud中找到自己-这是不可取的。不确定有关NSLibraryDirectory的策略。将对此进行详细阅读。如果您需要备份,请使用文档。如果您希望文件可以跨多个启动进行访问:请使用库。如果您希望仅在此会话中访问文件:使用缓存。确定。。。知道了。还有一个问题。。。如果我正在使用缓存,但无法删除临时文件,那么当内存受到限制时,它会自动清除吗?或者我是负责管理它的人,不遵守将导致苹果公司的拒绝?鉴于缓存目录的性质,我认为可以放心地假设你可以让它这样做,iOS将在需要时清除它,但我个人不了解苹果审查员对它的看法。好的,我理解。我会把这个放到我的应用程序中,看看。。。非常感谢你的帮助。