Dec*_*nna 6 asynchronous grand-central-dispatch ios completionhandler swift
查看文档,URLSession.dataTask很明显这个函数是异步调用的,但没有提到 completionHandler 是否返回到主线程、调用它的线程或保留在执行 dataTaskOperation 的线程上。
这里有一个普遍的约定吗?
let task = URLSession.shared().dataTask(with: request) {
//What Thread are we on here?
}
Run Code Online (Sandbox Code Playgroud)
从completionHandler参数的文档中URLSession dataTask:
该处理程序在委托队列上执行。
那么下一个问题是,什么是委托队列?这一切都取决于如何URLSession设置。您正在使用shared设置nil委托队列的会话。该方法queue参数的文档init说明:
如果为零,会话将创建一个串行操作队列,用于执行所有委托方法调用和完成处理程序调用。
因此,您发布的代码导致在后台串行队列上调用完成处理程序。
| 归档时间: |
|
| 查看次数: |
685 次 |
| 最近记录: |