gpt4 book ai didi

ios - session.dataTask 是异步的吗?

转载 作者:搜寻专家 更新时间:2023-10-31 22:10:37 24 4
gpt4 key购买 nike

我正在使用以下代码向我的服务器发出请求:

let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)
let dataTask = session.dataTask(with: request as URLRequest) { (data, response, error) in
if error != nil {
DispatchQueue.main.async(execute: {
completion(nil, error as NSError?)
})
return
}
DispatchQueue.main.async(execute: {
code...
})
}
dataTask.resume()

从我读到的内容来看,这不应该阻塞主线程,但它似乎正在这样做。分派(dispatch)到另一个线程后是否需要调用此代码?即:

DispatchQueue.global(qos: DispatchQoS.QoSClass.userInitiated).async {

}

或者 dataTask 本身是异步请求的,以免阻塞主线程并将其分派(dispatch)给另一个线程是多余的吗?

最佳答案

是的,系统给定 URLSession dataTask 本质上是 async。每当有带有完成处理程序的系统 API 调用时,API 本质上始终是 async。综上所述,上述实现是正确的。您不需要将任务放入全局队列。

关于ios - session.dataTask 是异步的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46954162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com