iOS,是否会自动写入文件:是永远不会失败?

iOS,是否会自动写入文件:是永远不会失败?,ios,iphone,objective-c,save,atomic,Ios,Iphone,Objective C,Save,Atomic,我正在为一款iPad游戏编写一个保存游戏功能,实际上只需要一个保存游戏。但是,我不确定我是否应该解释某种类型的savegame损坏,并在损坏的情况下使用当前/以前的保存 iOS设备事件是否会中断原子写入操作并使我的存储处于损坏状态?我说的是设备被关闭、多任务处理、主页按钮、电话呼叫等。我知道原子的定义意味着它不应该,但我想确定一下 +(void)writeSaveGameData:(NSData*)data { if(data == nil) { return;

我正在为一款iPad游戏编写一个保存游戏功能,实际上只需要一个保存游戏。但是,我不确定我是否应该解释某种类型的savegame损坏,并在损坏的情况下使用当前/以前的保存

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

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

}

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

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

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

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

要完全回答您的问题,没有办法使文件损坏,如果设备因任何原因中断您的写作,您将丢失文件。你要么全有要么一无所有


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

@Wooble该问题询问并回答写入是否完全完成或失败而不会损坏文件。这个问题询问在什么情况下可能发生失败。我认为这是一个很好的、新颖的问题。没有这种情况,这是另一个问题给出的答案。我认为你忽略了写作不完整和写作不完整与腐败之间的区别。后者不存在任何情况。如果操作成功,该方法返回BOOL,从docs==YES,否则返回NO。好吧,如果写入未完成,我仍将保留旧的save,因此很好,您的措辞有误导性。您可以获取新文件或原始文件。您无法获得的是部分新文件或根本没有文件。您的回答意味着整个文件可能会丢失。那不是真的。您可以丢失最新更新,但至少前一个文件仍将存在。如果他正在保存新文件,他将丢失所有内容,如果他正在更新,他将丢失更新并保留原始文件。