5

NSData でメモリ マップするファイルがあります。次に、エラーなしで NSFileManager を介してこのファイルを削除し、ファイルが実際に存在しないことを確認します (NSFileManager と ls に関する限り)。ただし、以前に NSData から取得したバイト ポインターからデータを読み取ることはできます。

シミュレーターでは、一見関係のないクラッシュが発生することがあります。デバイスでは、すべて正常に動作しているようです。何が起こっているのか、そして何を期待すべきなのかを知りたいと思っています (過去に予想していたのは、ファイルを削除しようとするとエラーが発生するか、削除後にアクセスしようとするとクラッシュすることです)。

ありがとう!

4

1 に答える 1

6

メモリのマップを解除していない場合は、ファイル ポインターで作成した mmap によって、ファイルが削除されないようになっています (ファイルが表示されていなくても)。参照ファイルを削除する前に、常にメモリのマップを解除する必要があります。

[これは、古い UNIX のトリックに関連しています。ファイル記述子を取得したら、ファイルを開き、ファイルのリンクを解除します。何かを実行できるファイルがありますが、誰も見ることができません。クラッシュすると、ファイルは完全に消えてしまいます!]

于 2012-08-07T18:16:28.157 に答える