NSURLSessionDownloadTask - 系列下载多个文件

时间:2015-02-02 01:19:14

标签: ios nsurlsessiondownloadtask

使用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

我搜索了SO和其他网站,但无法找到使用NSURLSessionDownloadTask连续下载文件的替代方法。

1 个答案:

答案 0 :(得分:1)

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

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

至于按顺序下载文件的最佳做法,您的设置看起来很稳固。