2

ネットワーク経由でデータを送信しているiPhoneでファイルを開いています(「_open」を使用して開きます)。ただし、iPhone のインターフェイスからファイルを削除する機能があります。これは、NSFileManager の removeItemAtPath を使用して行われます。

奇妙なことは、ファイルが現在開いているにもかかわらず、removeItemAtPath が成功していることです。

ファイルはネットワークを介して完全に転送され、転送が完了する前に removeItemAtPath が成功します。removeItemAtPath は遅延削除を行うのでしょうか? つまり、ファイルが使用中の場合、後でキューに入れますか? もしそうなら、問題はありません。

そうでない場合... NSFileManagerに削除を行わなかったという事実を実際に報告させる方法を誰かが知っていますか?

ありがとう!

4

1 に答える 1

3

のドキュメントによると

http://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/fileManager:shouldRemoveItemAtPath

shouldRemoveItemAtPath操作を続行する必要がある場合はYESを返しますが、必ずしもアイテムが正常に削除されているとは限りません。ドキュメントに次のように記載されていることも興味深いです。

考察このメソッドからNOを返すと、NSFileManagerはアイテムの削除を停止します。アイテムがディレクトリの場合、そのアイテムの子も削除されません。

これは非同期操作であり、ファイルが正常に削除されたかどうかを判断するためにこのメソッドの戻り値を使用するべきではないと私に信じさせる読書。私の推測では、オブジェクトは削除のためにキューに入れられ、ファイルが使用されなくなると削除されます。

于 2010-10-22T15:20:35.960 に答える