当我在删除文件时取消存档时是否可能崩溃?

Is it possible to crash when I unarchive a file while deleting it?

例如

NSString *path = @"XXX";
id obj = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

其他地方将通过 removeItemAtPath 删除此文件,这样做是否安全?据我所知,如果我用归档器将一个对象写入文件并同时修改该对象,它会导致崩溃,但我不明白那个的本质,所以我想知道如果我这样操作会发生什么。

不,它不会崩溃。直到没有进程打开文件时,文件才真正被删除。只要 unarchiver 打开文件供阅读,您就可以毫无问题地尝试删除所有想要的内容。解压器完成并关闭文件后,OS 将实际删除文件。

这对实际发生的事情有点过于简单化了,但它应该足以回答您的问题。

更详细的解释参见How do the UNIX commands mv and rm work with open files?和其他类似问题。 iOS 是 Unix 类型 OS,因此当您阅读该问题和已接受的答案时,所有提及的 Unix 都适用于 iOS。如果您不熟悉 Unix,rm 是在 Unix 中删除文件的命令。