0

私が取り組んでいるOSXアプリケーションの主要コンポーネントの1つは、NSURLDownloadを中心に構築されたダウンロードシステムです。

ユーザーの大多数(および社内の開発チーム)は、ファイルのダウンロードに問題はありません。ただし、世界中でランダムユーザーの割合はわずか(1〜2%)であるようです。これらのユーザーの場合、ダウンロードが完了する前にNSURLDownloadのdownloadDidFinish:デリゲートメソッドが呼び出されます。たとえば、ユーザーが5 GBのファイルをダウンロードしようとすると、3.5 GBのデータが転送された後にdownloadDidFinish:が呼び出され、ファイルが不完全になる可能性があります。明らかに、これはユーザーに多くのフラストレーションを引き起こしています。

私たちはこの問題にかなりの時間を費やしてきましたが、あまり進歩していません。OS Xが(誤って?)downloadDidFinishを呼び出すケースが少なくとも1つあることを確認しました。早すぎます。その場合、Macのボリュームが空き容量を使い果たします。なぜdownload:didFailWithError:デリゲートメソッドが代わりに呼び出されないので、これは奇妙なことに私を驚かせました。ただし、ダウンロードが不完全なユーザーの大多数は十分なディスク容量を持っているため、ディスク容量の不足が問題になるとは考えていません。

だから私の質問は次のとおりだと思います:ダウンロードが完了する前にNSURLDownload downloadDidFinish:が呼び出される可能性がある理由(ディスク容量が少ないこと以外)を知っていますか?あなたが私たちに与えることができるアドバイスをありがとう。

4

1 に答える 1

0

上記のAnoopの提案は正しいようです。設計図に戻り、サーバー側の切断を以前よりもうまくシミュレートしました。そうすることで、クライアントソフトウェアがNSURLDownload:downloadDidFinish:通知を受信することがわかりました。

個人的には、この状況でOS XがNSURLDownloadオブジェクトに(「失敗」ではなく)「終了」通知を送信するのは奇妙だと思います。しかし、私はそれがAppleがそれを機能させたい方法だと思います。

于 2012-11-21T15:42:42.413 に答える