2

串行下载文件列表的最佳做法是什么NSURLSessionDownloadTask

例如,是否最好NSURLSession在上一次下载完成后开始新的?

- (void)startDownloadWithRequest:(NSURLRequest *)request{

    NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];

    NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithRequest:request];
    [downloadTask resume];

}

然后在委托完成后-startDownload再次调用不同的请求。

- (void)URLSession:(NSURLSession *)session
      downloadTask:(NSURLSessionDownloadTask *)downloadTask
didFinishDownloadingToURL:(NSURL *)location{

    NSURL *url = [NSURL URLWithString:@"http://asdf.com/Hello_world.pdf"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    [self startDownload:request];

}

这种链接下载的方法是否会导致堆栈随着每个后续请求而增长,因为-startDownloadWithRequest在上一次下载完成时调用 in 发生?

我搜索了 SO 和其他网站,但找不到使用NSURLSessionDownloadTask.

4

1 回答 1

1

如果要执行的任务在配置方面遵循相同的规则,例如超时、cookie 和缓存策略等,那么当然不需要创建新的会话(和配置)对象

相反,这会适得其反,你为什么要分配做完全相同的事情的新对象?如果配置没有施加更严格的策略,您甚至可以通过 NSUrlRequest 覆盖会话配置的某些策略。

至于串行下载文件的最佳实践,您的设置看起来很可靠。

于 2015-02-02T01:30:28.377 回答