我正在为 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/