在 iOS 中使用 NSUrlSession 一次下载 1 个文件

Posted

技术标签:

【中文标题】在 iOS 中使用 NSUrlSession 一次下载 1 个文件【英文标题】:Download 1 file at a time using NSUrlSession in iOS 【发布时间】:2016-02-02 05:10:06 【问题描述】:

我是downloading 在我的ios 应用程序中使用NSUrlSession 的多个文件。我想一次只下载一个文件。但它是downloading 一次多个文件。请提出一种一次下载一个文件的方法。

我试过这个属性:

sessionConfiguration.HTTPMaximumConnectionsPerHost = 1

但如果它们托管在不同的服务器上,它也会下载多个文件。请提出一种方法来做到这一点

【问题讨论】:

NSUrlSession 在后台下载文件并在完成时提供完成处理程序。您可以在上一个的完成处理程序中下载下一个。但是,为什么要一次下载一个。那只会更慢。 【参考方案1】:

你有两个选择:

    同步:菊花链你来自completionHandler的请求,在前一个完成或失败时触发一个新的NSURLSessionresume

    李>

    异步:每个操作必须在下一个操作开始之前完成,并且等待直到完成信号使用信号量。执行每个NSURLSession resume 调度的线程将等待该操作完成。见https://***.com/a/21205992/218152

同步/异步说明

这些选项都不建议在主线程上运行您的操作:sync/async 只是指负责调度的后台线程。

【讨论】:

以上是关于在 iOS 中使用 NSUrlSession 一次下载 1 个文件的主要内容,如果未能解决你的问题,请参考以下文章

在IOS中使用web服务时发生NSURLSession内存泄漏

在 iOS8 中使用 NSUrlSession 使用流请求进行后台上传

无法在 iOS 中使用 NSURLSession 多部分表单数据上传文件

NSURLSession详解

ios学习笔记——NSURLSession

iOS NSURLSession 实现网络请求-文件下载-上传-后台下载