使用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
连续下载文件的替代方法。
答案 0 :(得分:1)
如果要执行的任务在配置方面遵循相同的规则,则当然不需要创建新的会话(和配置)对象,例如超时,cookie和缓存策略等
相反,这会适得其反,为什么要分配完全相同的新对象呢?如果配置没有实施更严格的策略,您甚至可以通过NSUrlRequest覆盖会话配置的某些策略。
至于按顺序下载文件的最佳做法,您的设置看起来很稳固。