当我在删除文件时取消存档时是否可能崩溃?
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 中删除文件的命令。
例如
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 中删除文件的命令。