我使用的OS应用程序的主要组件之一是一个下载系统,它是围绕NSURLDownload构建的。
我们的绝大多数用户(以及我们内部的开发团队)在下载文件时都没有任何问题。然而,我们似乎在全球范围内有一小部分随机用户(1-2%)这样做。对于这些用户,NSURLDownload的downloadDidFinish: delegate方法在下载完成之前被调用。例如,如果用户尝试下载一个5 GB的文件,则在仅传输了3.5 GB的数据后可能会调用downloadDidFinish:,从而导致文件不完整。显然,这引起了很多用户的不满。
我们已经在这个问题上花了很多时间,但没有取得太大进展。我们已经看到,至少有一种情况下,OS (错误?)调用downloadDidFinish:太早了,这时Mac卷的可用空间就会很小。这让我觉得很奇怪,为什么不调用download:didFailWithError: delegate方法呢?但绝大多数下载不完整的用户都有足够的磁盘空间,所以我们不认为磁盘空间不足是他们的问题。
所以我想我的问题是:你们知道在下载完成之前调用NSURLDownload downloadDidFinish:的原因(除了磁盘空间不足之外)吗?感谢您给我们的任何建议。
发布于 2012-11-21 23:42:42
Anoop上面的建议看起来是正确的。我们回到了绘图板上,比以前更好地模拟了服务器端的断开。我们发现,通过这样做,我们的客户端软件将收到NSURLDownload:downloadDidFinish:通知。
就我个人而言,我认为OS在这种情况下会给我们的NSURLDownload对象发送一个“完成”(而不是“失败”)的通知是很奇怪的。但我猜这就是苹果想要的工作方式。
https://stackoverflow.com/questions/13401195
复制相似问题