使用单个 URLSessionDownloadDelegate 确认类使用多个下载任务是一种好方法吗?
Posted
技术标签:
【中文标题】使用单个 URLSessionDownloadDelegate 确认类使用多个下载任务是一种好方法吗?【英文标题】:Is it a good approach to use multiple download tasks with a single URLSessionDownloadDelegate confirming class? 【发布时间】:2017-07-17 11:22:47 【问题描述】:目前我正在实施一个网络管理器来处理下载和上传任务。我有一个确认 URLSessionDownloadDelegate、URLSessionDelegate 的类。我面临的问题是我正在使用一个用于所有服务调用的会话对象。因此,当处理多个网络操作时,所有响应回调都将在实现委托方法的类中处理。因此,为了找到响应已到达的调用,我正在比较委托方法的任务参数和当前正在运行的所有任务(我对确认会话协议的类中的每个委托方法都有闭包属性)。有没有其他方法可以达到这个结果?(我认为在处理大量请求时这不是一个好的解决方案)
【问题讨论】:
“我认为在处理大量请求时这不是一个好的解决方案”,为什么不呢? 如果多个请求的回调同时进来怎么办? 应根据请求的数量调用所需的委托方法......调试不会那么容易,但它应该可以按预期工作。 @jegadeesh 这也可能发生在异步网络的任何其他实现中,并且与 NSURLSession 无关。在更改共享数据时提供线程安全是您的工作。 相关:***.com/questions/24173210/… 【参考方案1】:理想情况下,您不应该自己进行比较,而应该将闭包存储在由任务对象键入的字典中。确保在任何将一个任务替换为另一个任务的委托方法中更新字典。并且确保每次都在同一个线程或串行队列上进行字典查找和存储。
【讨论】:
以上是关于使用单个 URLSessionDownloadDelegate 确认类使用多个下载任务是一种好方法吗?的主要内容,如果未能解决你的问题,请参考以下文章
使用单个客户端和单个会话模拟 SQL Server 上的死锁
使用 lambda 在单个实例上重新定义单个 ruby 方法
有没有办法使用单个 BS 模态和单个 JS 代码进行多次删除/确认操作?