Ottenere callback di fspathcopyobjectAsync in ARC
-
14-11-2019 - |
Domanda
Sto cercando di usare FSPathCopyObjectAsync
e sto fallendo. Per ottenere la testa per il problema, ho cercato esempi di esso altrove e anche se stavo sperimentando il codice sorgente leggermente datato da Il tutorial di Matt lungo sul cacao è la mia ragazza , ho poi trovato un po 'più Elaborato esempio in Un progetto su GitHub, come categoria su NSFileManager
. Dal momento che il mio progetto è in esecuzione sotto ARC, ho provato a portarlo e sono riuscito solo a metà di esso.
Nel suo Modulo corrente , i lavori di copia effettiva, tuttavia il metodo di callback MZCopyFSPathFileOperationStatusProc
non viene mai chiamato. Quel metodo di callback è l'unico motivo per l'uso della copia asincrona, altrimenti si potrebbe anche eseguire una sincrona in background. Suppongo che la ragione per il callback non venga chiamata è che un oggetto è stato rilasciato in modo errato da Arc, ma potrebbe esserci qualcos'altro. Sto tenendo all'oggetto di ritorno del metodo copyItemAsyncAtPath:toPath:destName:options:statusChangeInterval:error:
, in modo che non possa essere, giusto?
Chi può Spot L'errore e spiega perché questa categoria non sta generando callback? È arco? È qualcos'altro?
Molto obbligato. EP.
P.S. Per motivi di ridondanza, ecco il GIST: https://gist.github.com/6f3715753896ccf6fd35
Soluzione
Your delegate needs to be strongly referenced by something. NSFileManager will only hold a weak reference to it (as it should do), so if you don’t have a strong reference to it, your delegate will get released and the callbacks won’t be seen.
Have you considered using blocks for the callbacks? That would probably be preferable.