iOS,将writeToFile:原子地:YES永远不会失败?

时间:2014-01-06 17:25:10

标签: ios iphone objective-c save atomic

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

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

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

}

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

1 个答案:

答案 0 :(得分:2)

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

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

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

要完全回复您的问题,没有办法让文件损坏,如果设备因任何原因中断您的写作,您将丢失该文件。你有全有或全无!

正如您没有提及是保存新文件还是更新旧文件。如果您要更新文件,只是更新将丢失,如果您正在编写新文件,您将丢失所有内容。