默认配置 URLSession和URLSession的区别是什么?
在我的应用程序中,我使用URLSession.shared向服务器发送请求。现在我想把它改成URLSession.init(configuration: URLSessionConfiguration.default).
但是如果我使用URLSession.init(configuration: URLSessionConfiguration.default),那么我的所有请求都需要更多的时间来加载。
与URLSession.shared,URLSession.init(configuration: URLSessionConfiguration.default)相比,加载请求需要花费更多的时间。(共享会话比默认配置的URLSession快5到10倍)。
这两种方法有什么区别?
为什么默认配置的URLSession需要更多的时间来加载请求?
发布于 2020-05-13 12:58:26
共享会议的限制
换句话说,如果您正在使用缓存、cookie、身份验证或自定义网络协议执行任何操作,则可能应该使用默认会话而不是共享会话。
欲了解更多信息:https://developer.apple.com/documentation/foundation/urlsession/1409000-shared
发布于 2019-09-17 10:09:50
URLSession有一个用于基本请求的单例共享会话(它没有配置对象)。它不像您创建的会话那样可定制,但是如果您的需求非常有限,它是一个很好的起点。URLSession.shared已被创建为不需要额外时间配置的对象,问题是默认超时的默认值。
对我来说,最佳实践之一是创建一个URLsession的共享实例,并将其用于多个任务。不需要开销配置,因为通常您需要对api进行相同的配置。这样做的好处是,我只需要创建一次会话,这样就可以节省相同代码的重复,以及在每个api请求中再次初始化相同内容的过程。如果您需要对会话进行更多的自定义配置,这将更有帮助。
发布于 2019-09-17 10:16:16
URLSession.init():由子类实现,以便在为其分配内存后立即初始化一个新对象(接收方)。注意:在初始化对象之前,它还没有准备好使用。
URLSession.shared:对于基本请求,URLSession类提供了一个共享的单例会话对象,为创建任务提供了合理的默认行为。使用共享会话只需几行代码就可以将URL的内容提取到内存中。与其他会话类型不同的是,您不创建共享会话;您只是通过直接使用此属性来访问它。因此,您不提供委托或配置对象。
https://stackoverflow.com/questions/57971904
复制相似问题