我正在Swift中编写后台处理。
我想在流程完成后再做一个流程。
let dispatchQueue = DispatchQueue(label: "QueueIdentification", qos: .background)
dispatchQueue.async
{
}
我如何知道DispatchQueue的后台处理已终止?
这里的"不要问-告诉"原则更好:
let dispatchQueue = DispatchQueue(label: "QueueIdentification", qos: .background)
dispatchQueue.async
{
// do whatever needed here
DispatchQueue.main.async {
// inform whoever needed about completion here
}
}
我将给出一个与Asperi略有不同的公式,尽管我们说的是一样的。您有:
dispatchQueue.async {
}
当你找到正确的大括号时,异步的东西就结束了:
dispatchQueue.async {
} // <-- here
这看起来可能没有太大帮助,因为右大括号是不可执行的,尽管您在调试程序中执行代码时确实到此为止。但再回到一行:
dispatchQueue.async {
// ... some stuff happens ...
// THIS is the last thing that happens; once this line runs, it's all over
}
所以诀窍是,使用最后一行来"知道后台处理已经终止"。