Question

je cherche à utiliser FSPathCopyObjectAsync et j'échoue.Afin de comprendre le problème, j'en ai cherché des exemples ailleurs et même si j'expérimentais avec le code source légèrement daté de Le tutoriel de Matt Long sur Cocoa is my Girlfriend, j'ai ensuite trouvé un exemple un peu plus élaboré dans un projet sur github, en tant que catégorie sur NSFileManager.Comme mon projet fonctionne sous ARC, j'ai essayé de le porter et je n'ai réussi qu'à la moitié.

Dans son Forme actuelle, la copie proprement dite fonctionne, mais la méthode de rappel MZCopyFSPathFileOperationStatusProc n'est jamais appelé.Cette méthode de rappel se trouve être la seule raison d'utiliser la copie asynchrone, sinon on pourrait aussi bien en exécuter une synchrone en arrière-plan.Je suppose que la raison pour laquelle le rappel n'est pas appelé est qu'un objet n'est pas correctement publié par ARC, mais il pourrait se passer autre chose.Je conserve l'objet de retour du copyItemAsyncAtPath:toPath:destName:options:statusChangeInterval:error: méthode, donc ça ne peut pas être ça, non ?

Qui peut repérer l'erreur et expliquer pourquoi cette catégorie ne génère aucun rappel ?Est-ce l'ARC ?Est-ce autre chose ?

Bien obligé.PE.

P.S.Pour des raisons de redondance, voici l'essentiel : https://gist.github.com/6f3715753896ccf6fd35

Était-ce utile?

La solution

Votre délégué doit être fortement référencé par quelque chose.NSFileManager ne contiendra qu'une faible référence (comme il se doit), donc si vous n'y avez pas de référence forte, votre délégué sera libéré et les rappels ne seront pas vus.

Avez-vous envisagé d'utiliser des blocs pour les rappels ?Ce serait probablement préférable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top