NSOperationからダウンロードを開始したときにNSURLDownloadDelegateが呼び出されない

私は、ダウンロードキューを管理するためにNSOperationQueueを使用するように私のアプリを切り替えました。私はNSURLDownloadsを開始し、NSOperationサブクラス内からデリゲートコールバックをすべて処理しています。しかし、私はそれをテストするために行ったとき、私はデリゲートメソッドのどれも呼び出されていないことが分かった。 NSURLDownloadの既知の問題(私が見つけたのは、それがメインスレッドにデリゲートメッセージを投稿するだけだと言われていました)のNSURLDownloadクラスリファレンスがどのようになっているのか、

"これらのデリゲートメソッドは、関連するNSURLDownloadオブジェクトの非同期ロード操作を開始したスレッドで呼び出されることに注意してください。

これは私が、バグが少なくともライオンで修正されていたはずだったと思っています。しかし、私は10.7.2を実行しており、NSURLDownloadは間違いなく正しく動作していません。私がここで紛失しているものはありますか?デリゲートメソッドをヘッダファイルに宣言していませんでしたが、それは問題ではありません...それはどうですか?

(私はNSURLConnectionを使用する代わりにNSURLDownloadのダウンロード処理機能を利用できることを期待しています。)

NSOperationサブクラスを同時に実行するように設定しました。mainの代わりにstartをオーバーライドしました。

助けを借りてくれてありがとうございました。

サム

P.S.私はこれをアップルのデベロッパーフォーラムにも投稿しています。もっと多くの人がそれを見ることができるという希望で。

0

1 答え

NSURLDownloadは、コールバックを提供するためにNSRunLoopに登録します。各runloopは特定のスレッドに結び付けられています。あなたのケースでは、NSOperationでは、NSURLDownloadを設定します。NSURLDownloadは、操作が実行されているスレッドの実行ループに登録されます(確定的ではありません)。しかし、-startメソッドまたは-mainメソッドを終了すると、スレッド(およびそのrunloop)が破損する可能性があります。

http://developer.apple.com/library/ios/#を参照してください。 qa/qa1712/_index.html をご覧ください。

0
追加された