2010-10-22 6 views
2

J'ai un fichier ouvert sur l'iPhone auquel j'envoie les données sur le réseau (Ouvert en utilisant "_open"). Cependant, j'ai la possibilité de supprimer des fichiers de l'interface de l'iPhone. Ceci est fait en utilisant removeItemAtPath de NSFileManager.removeItemAtPath sur un fichier déjà ouvert

La chose étrange est que removeItemAtPath réussit même si le fichier est actuellement ouvert.

Le fichier est parfaitement transféré sur le réseau et removeItemAtPath réussit avant la fin du transfert. Donc removeItemAtPath fait-il une suppression paresseuse? c'est-à-dire fait-il la queue pour plus tard si le fichier est en cours d'utilisation? Si oui, pas de problèmes.

Si non ... est-ce que quelqu'un sait comment je peux obtenir NSFileManager pour signaler le fait qu'il n'a pas fait la suppression?

Merci!

Répondre

3

Selon la documentation à

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

shouldRemoveItemAtPath renvoie Oui si l'opération doit procéder, pas nécessairement qu'il a déjà supprimé l'élément avec succès. Il est également intéressant que les états de la documentation:

Discussion Retour de NO à partir de cette méthode provoque NSFileManager pour arrêter la suppression de l'élément. Si l'élément est un répertoire, aucun enfant de cet élément n'est supprimé non plus. La lecture qui me porte à croire qu'il s'agit d'une opération asynchrone et que la valeur de retour de cette méthode ne doit pas être utilisée pour déterminer si le fichier a été supprimé avec succès. Je suppose qu'il met en attente l'objet pour la suppression et sera supprimé lorsque le fichier n'est plus utilisé.

+0

C'est bien pour une conjecture. J'ai besoin de savoir. Je n'implémente pas shouldRemoveItemAtPath btw. De même, il n'y a rien qui empêche de rester entièrement synchrone. Je ne vois pas comment cela implique un niveau d'asynchronisme ... – Goz

+0

Je pense que c'est un peu plus qu'une supposition. Ceci est le document officiel Apple. Si la valeur de retour était OUI pour une suppression réussie ou NON pour une suppression infructueuse, cela indiquerait que. Tout ce qu'il nous dit, cependant, c'est que la meilleure estimation de la méthode est que la suppression continuera. – bradenb

+1

Eh bien, j'ai vérifié. Le fichier est supprimé juste pas immédiatement. Une fois mon transfert terminé, si j'essaie de transférer à nouveau le fichier, il retourne "n'existe pas" sur l'iPhone. Trié. – Goz