我正在用 Objective-C 编写一个下载管理器,我让它与恢复功能一起使用。我在收到数据时将数据写入磁盘,这样如果下载因任何原因中断,它应该从中断的地方继续。苹果说你应该期待一个或多个- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
事件。在这种情况下,他们说您应该重置您之前收到的所有数据,因为您的下载正在被重定向并且您已经收到的字节无效,所以我删除现有文件并使用 0 字节重新创建。但是,如果我多次收到此事件,我必须以部分下载的形式删除我之前收到的数据,这违背了恢复功能的目的。有针对这个的解决方法吗?
我想出的解决方案是:仅- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
在第一次之后重置我收到的事件的数据。这将解决大多数情况(我认为)。这在逻辑上合理吗?有更好的选择吗?- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
文件下载触发多个事件的可能性有多大?