ios - 共享 URLSession 与默认配置的 URLSession

标签 ios swift macos

共享 URLSession默认配置的 URLSession 有什么区别?

在我的应用程序中,我使用 URLSession.shared 向服务器发送请求。现在我尝试将其更改为 URLSession.init(configuration: URLSessionConfiguration.default)

但是如果我使用URLSession.init(configuration: URLSessionConfiguration.default),我的所有请求都需要更多时间来加载。

URLSession.shared 相比,URLSession.init(configuration: URLSessionConfiguration.default) 加载请求的时间更长。(共享 session 是 5 到 10 倍)比默认配置的 URLSession 更快)。

这两种方法有什么区别?

为什么默认配置的 URLSession 需要更多时间来加载请求?

最佳答案

共享 session 的限制

  • 您不提供委托(delegate)或配置对象。
  • 您无法在数据从服务器到达时增量获取数据。
  • 您无法大幅自定义默认连接行为。
  • 您执行身份验证的能力有限。
  • 当您的应用未运行时,您无法执行后台下载或上传。

换句话说,如果您使用缓存、cookie、身份验证或自定义网络协议(protocol)进行任何操作,您可能应该使用默认 session 而不是共享 session 。

了解更多信息:https://developer.apple.com/documentation/foundation/urlsession/1409000-shared

关于ios - 共享 URLSession 与默认配置的 URLSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57971904/

相关文章:

ios - 无法运行 'Pod Setup'

iphone - 通过另一个 NSMutableArray 使用自定义对象对 NSMutableArray 进行排序

objective-c - 点击选项卡栏项目 View 在 iphone 中没有改变

ios - 没有互联网的icloud同步

objective-c - 从 Objective C 以提升的权限运行 AppleScript

macos - Mercurial OS X 扩展启用

android - Cordova:在子浏览器中使用 window.open

iOS 7 TableView 类似于 iPad 上的设置应用程序

ios - 我的 firebase int 返回 nil

swift - 为什么 SwiftyJSON 为其常量创建隐式解包可选?