我有一个文件,我使用NSData进行内存映射。然后,我通过NSFileManager删除此文件,没有任何错误,并继续检查该文件确实不存在(就NSFileManager和ls而言)。但是,我仍然可以从之前从NSData获得的字节指针中读取数据!
在模拟器中,我有时会遇到看似无关的崩溃。在设备上,一切似乎都很好。我很想知道发生了什么,我应该期待什么(我过去期望在尝试删除文件时遇到错误,或者在我删除文件后尝试访问时出现崩溃)。
谢谢!
答案 0 :(得分:6)
如果你没有取消映射内存,那么使用文件指针创建的mmap会阻止文件被删除(即使你看不到它)。在删除引用文件之前,应始终取消映射内存。
[这与一个旧的UNIX技巧有关 - 打开一个文件,一旦你有一个文件描述符然后取消链接文件 - 你有一个文件你可以做但没有人可以看到,如果你完全崩溃文件去远!]