ARCのFSPathCopyObjectAsyncのコールバックを取得します
-
14-11-2019 - |
質問
FSPathCopyObjectAsync
を使っていて、失敗しています。私が他の場所の例を探していた問題を中心にして、私は GITHUB上のプロジェクト、NSFileManager
のカテゴリとして。私のプロジェクトはARCの下で実行されているので、私はそれを移植しようとしました、そしてその半分だけ成功しました。
その現在のフォーム、実際のコピー作業は、CallbackメソッドMZCopyFSPathFileOperationStatusProc
は呼び出されません。そのコールバックメソッドは、非同期コピーを使用する唯一の理由であることが起こります。コールバックが呼び出されない理由は、いくつかのオブジェクトがARCによって誤ってリリースされているということですが、他に何かが起こっている可能性があります。 copyItemAsyncAtPath:toPath:destName:options:statusChangeInterval:error:
メソッドのReturnオブジェクトに保持しているので、それほど右?
誰がエラーを見つけて、このカテゴリがコールバックを生成していない理由を説明しますか?それは弧ですか?それは他のものですか?
は大いに義務付けられています。 ep。
p.S。冗長性の理由から、ここにgist: https://gist.github.com/6F3715753896CCF6FD35
解決
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.