0

我使用的 OS X 应用程序的主要组件之一是下载系统,它是围绕 NSURLDownload 构建的。

我们的绝大多数用户(以及我们的内部开发团队)在下载文件方面没有任何问题。然而,我们似乎在全球范围内有一小部分随机用户 (1-2%) 这样做。对于这些用户,NSURLDownload 的 downloadDidFinish: 委托方法在下载完成之前被调用。例如,如果用户尝试下载 5 GB 的文件,则可能会在仅传输 3.5 GB 的数据后调用 downloadDidFinish:,从而导致文件不完整。显然,这引起了用户的极大不满。

我们在这个问题上花了很多时间,但没有取得太大进展。我们已经看到,至少有一种情况是 OS X(错误地?)调用 downloadDidFinish: 太早了,此时 Mac 的可用空间不足。这让我觉得很奇怪,因为为什么不调用 download:didFailWithError: 委托方法呢?但是绝大多数下载不完整的用户都有足够的磁盘空间,所以我们认为磁盘空间不足不是他们的问题。

所以我想我的问题是:你们知道为什么 NSURLDownload downloadDidFinish: 可能在下载完成之前被调用的任何原因(除了磁盘空间不足)吗?感谢您给我们的任何建议。

4

1 回答 1

0

Anoop's suggestion above looks to be correct. We went back to the drawing board and simulated Server-side disconnects better than we had been. We found that by doing so, our Client software would receive NSURLDownload:downloadDidFinish: notifications.

Personally I think it's strange that OS X would send our NSURLDownload objects a "finish" (rather than a "fail") notification in this situation. But I guess that's the way Apple wants it to work.

于 2012-11-21T15:42:42.413 回答