OStack程序员社区-中国程序员成长平台

标题: ios - NSURLSessionDownloadTask - 串行下载多个文件 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 05:07
标题: ios - NSURLSessionDownloadTask - 串行下载多个文件

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

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

- (void)startDownloadWithRequestNSURLRequest *)request{

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

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

}

然后在委托(delegate)中完成调用 -startDownload 再次使用不同的请求。

- (void)URLSessionNSURLSession *)session
      downloadTaskNSURLSessionDownloadTask *)downloadTask
didFinishDownloadingToURLNSURL *)location{

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

    [self startDownload:request];

}

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

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



Best Answer-推荐答案


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

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

关于串行下载文件的最佳做法,您的设置看起来很可靠。

关于ios - NSURLSessionDownloadTask - 串行下载多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28269897/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4