0
NSString *path = @"XXX";
id obj = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
和其他地方會由removeItemAtPath刪除這個文件,無論是安全的呢?據我所知,如果我使用歸檔程序向文件寫入對象,並在同一時間修改該對象,則會導致崩潰,但我不瞭解這個對象的本質,所以我想知道如果我這樣操作會發生什麼。
NSString *path = @"XXX";
id obj = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
和其他地方會由removeItemAtPath刪除這個文件,無論是安全的呢?據我所知,如果我使用歸檔程序向文件寫入對象,並在同一時間修改該對象,則會導致崩潰,但我不瞭解這個對象的本質,所以我想知道如果我這樣操作會發生什麼。
不,它不會崩潰。在沒有進程打開文件之前,文件實際上並未被刪除。只要unarchiver具有可供閱讀的文件,您就可以嘗試刪除所有您想要的內容而不會造成問題。一旦unarchiver完成並關閉文件,操作系統將實際刪除文件。
這是對真正發生的事情過於簡單化,但它應該足以滿足您的問題。
有關更詳細的解釋,請參閱How do the UNIX commands mv and rm work with open files?和其他類似問題。 iOS是一個Unix類型的操作系統,所以當你閱讀這個問題和被接受的答案時,所有提到的Unix都適用於iOS。如果您在Unix中不流利,rm
是在Unix中刪除文件的命令。
很好的答案。 (投票) –