我正在为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]];
}
答案 0 :(得分:2)
不,这并不意味着它永远不会失败,原子意味着两件事:
1 - 您的文件将正确保存,在完全保存之前您将无法访问它,无法访问一半保存的文件或类似的内容。
2 - 如果在保存过程中出现问题,则根本不会保存。因此,如果您的电池在保存过程中结束,您将丢失文件。
要完全回复您的问题,没有办法让文件损坏,如果设备因任何原因中断您的写作,您将丢失该文件。你有全有或全无!
正如您没有提及是保存新文件还是更新旧文件。如果您要更新文件,只是更新将丢失,如果您正在编写新文件,您将丢失所有内容。