iOS,将 writeToFile :atomically:YES never fail?

标签 ios iphone objective-c save atomic

我正在为 iPad 游戏编写一个保存游戏功能,实际上只需要 1 个保存游戏。但是,我不确定是否应该考虑某种保存游戏损坏并使用当前/以前的保存以防万一损坏。

iOS 设备事件可以中断原子写入操作并使我的保存处于损坏状态吗?我说的是设备关闭、多任务处理、主页按钮、电话等内容。我知道原子的定义意味着它不应该,但我想确定一下。

+(void)writeSaveGameData:(NSData*)data
{
    if(data == nil)
    {
        return;
    }
     [data writeToFile:[SaveGame savegamePath] atomically:YES];

}

+(NSData*)saveGameData
{
    return [NSData dataWithContentsOfFile:[SaveGame savegamePath]];
}

最佳答案

不,这并不意味着它永远不会失败,原子上意味着两件事:

1 - 您的文件将正确保存,并且在完全保存之前您将无法访问它,无法访问已保存一半的文件或类似的文件。

2 - 如果在保存过程中出现问题,则根本不会保存。因此,如果您的电池在保存过程中耗尽,您将丢失该文件。

为了完全回答您的问题,文件不可能损坏,如果设备因任何原因中断您的写入,您将丢失文件。你要么拥有一切,要么一无所有!

正如您没有提到是保存新文件还是更新旧文件..如果您正在更新文件,则仅更新将会丢失,如果您正在写入新文件,您将丢失所有内容。

关于iOS,将 writeToFile :atomically:YES never fail?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20955594/

相关文章:

ios - 我如何判断网页何时开始在 WKWebView 中可见

iphone - 带有 "+"的电话号码与没有 "+"的电话号码不同吗?

iphone - UITableView 给出空表,不加载数据

ios - 推送到 UINavigationController 时 UIViewControllers 出现问题 - iOS 7.1

iphone - Objective-C 泄漏

iphone - Xcode - 帮助将一些代码实现到基于 View 的应用程序中?

ios - 当应用程序运行时,本地通知不会弹出,但当应用程序处于后台时,本地通知会弹出

ios - objective-c 指针可以重用吗?

ios - 从相机胶卷异步获取所有图像

iphone UIPicker 默认位置