Frage

Ich suche nach einer Verwendung FSPathCopyObjectAsync und ich versage.Um mich mit dem Problem auseinanderzusetzen, habe ich an anderer Stelle nach Beispielen dafür gesucht, obwohl ich mit dem etwas veralteten Quellcode von experimentiert habe Matt Longs Tutorial zu Cocoa is my Girlfriend, ein etwas ausführlicheres Beispiel habe ich dann in gefunden ein Projekt auf Github, als Kategorie auf NSFileManager.Da mein Projekt unter ARC läuft, habe ich versucht, es zu portieren, und es gelang mir nur zur Hälfte.

In seinem aktuelle Form, das eigentliche Kopieren funktioniert, aber die Callback-Methode MZCopyFSPathFileOperationStatusProc wird nie aufgerufen.Diese Rückrufmethode ist zufällig der einzige Grund für die Verwendung des asynchronen Kopierens, andernfalls könnte man genauso gut eine synchrone Methode im Hintergrund ausführen.Ich gehe davon aus, dass der Grund dafür, dass der Rückruf nicht aufgerufen wird, darin liegt, dass ein Objekt von ARC fälschlicherweise freigegeben wurde, aber es könnte auch etwas anderes im Gange sein.Ich halte am Rückgabeobjekt des fest copyItemAsyncAtPath:toPath:destName:options:statusChangeInterval:error: Methode, daran kann es also doch nicht liegen, oder?

Wer kann Finde den Fehler und erklären Sie, warum diese Kategorie keine Rückrufe generiert?Ist es ARC?Ist es etwas anderes?

Herzlichen Dank.EP.

P.S.Aus Redundanzgründen hier das Wesentliche: https://gist.github.com/6f3715753896ccf6fd35

War es hilfreich?

Lösung

Ihr Delegierter muss durch etwas stark referenziert werden.NSFileManager enthält nur einen schwachen Verweis darauf (wie es sein sollte). Wenn Sie also keinen starken Verweis darauf haben, wird Ihr Delegat freigegeben und die Rückrufe werden nicht angezeigt.

Haben Sie darüber nachgedacht, Blöcke für die Rückrufe zu verwenden?Das wäre wahrscheinlich vorzuziehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top