首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有默认配置的共享URLSession与URLSession

具有默认配置的共享URLSession与URLSession
EN

Stack Overflow用户
提问于 2019-09-17 10:02:31
回答 3查看 3.2K关注 0票数 5

默认配置 URLSessionURLSession的区别是什么?

在我的应用程序中,我使用URLSession.shared向服务器发送请求。现在我想把它改成URLSession.init(configuration: URLSessionConfiguration.default).

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

与URLSession.shared,URLSession.init(configuration: URLSessionConfiguration.default)相比,加载请求需要花费更多的时间。(共享会话比默认配置的URLSession快5到10倍)。

这两种方法有什么区别?

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

EN

回答 3

Stack Overflow用户

发布于 2020-05-13 12:58:26

共享会议的限制

  • 您没有提供委托或配置对象。
  • 不能在数据从服务器到达时以增量方式获取数据。
  • 您不能显著自定义默认连接行为。
  • 您执行身份验证的能力有限。
  • 当应用程序不运行时,不能执行后台下载或上传。

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

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

票数 3
EN

Stack Overflow用户

发布于 2019-09-17 10:09:50

URLSession有一个用于基本请求的单例共享会话(它没有配置对象)。它不像您创建的会话那样可定制,但是如果您的需求非常有限,它是一个很好的起点。URLSession.shared已被创建为不需要额外时间配置的对象,问题是默认超时的默认值。

对我来说,最佳实践之一是创建一个URLsession的共享实例,并将其用于多个任务。不需要开销配置,因为通常您需要对api进行相同的配置。这样做的好处是,我只需要创建一次会话,这样就可以节省相同代码的重复,以及在每个api请求中再次初始化相同内容的过程。如果您需要对会话进行更多的自定义配置,这将更有帮助。

票数 1
EN

Stack Overflow用户

发布于 2019-09-17 10:16:16

URLSession.init():由子类实现,以便在为其分配内存后立即初始化一个新对象(接收方)。注意:在初始化对象之前,它还没有准备好使用。

URLSession.shared:对于基本请求,URLSession类提供了一个共享的单例会话对象,为创建任务提供了合理的默认行为。使用共享会话只需几行代码就可以将URL的内容提取到内存中。与其他会话类型不同的是,您不创建共享会话;您只是通过直接使用此属性来访问它。因此,您不提供委托或配置对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57971904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档