dispatch.async() 只运行 1 行代码
dispatch.async() only runs 1 line of code
我无法理解 dispatch.async
。我有以下代码:
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_UTILITY.rawValue), 0)) {
print("hello")
print("world")
dispatch_async(dispatch_get_main_queue()) {
print("done")
}
}
然而它唯一打印出来的是:
hello
无论我做什么,都只执行第一行。如果我用函数替换它,像这样:
func printHelloWorld(){
print("hello")
print("world")
}
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_UTILITY.rawValue), 0)) {
printHelloWorld()
dispatch_async(dispatch_get_main_queue()) {
print("done")
}
}
同样的事情发生了。函数被调用,但是可执行代码的第一行只有运行。此外,线程完成时要调用的闭包根本没有被调用。
如能帮助理解如何使用 dispatch.async
,我们将不胜感激。
Playgrounds 在主线程完成后停止执行运行 顶级代码。如果你是 运行 异步代码,你可以使用这行代码来保持 playground 运行:
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
然后在完成后使用这行代码:
XCPlaygroundPage.currentPage.finishExecution()
我无法理解 dispatch.async
。我有以下代码:
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_UTILITY.rawValue), 0)) {
print("hello")
print("world")
dispatch_async(dispatch_get_main_queue()) {
print("done")
}
}
然而它唯一打印出来的是:
hello
无论我做什么,都只执行第一行。如果我用函数替换它,像这样:
func printHelloWorld(){
print("hello")
print("world")
}
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_UTILITY.rawValue), 0)) {
printHelloWorld()
dispatch_async(dispatch_get_main_queue()) {
print("done")
}
}
同样的事情发生了。函数被调用,但是可执行代码的第一行只有运行。此外,线程完成时要调用的闭包根本没有被调用。
如能帮助理解如何使用 dispatch.async
,我们将不胜感激。
Playgrounds 在主线程完成后停止执行运行 顶级代码。如果你是 运行 异步代码,你可以使用这行代码来保持 playground 运行:
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
然后在完成后使用这行代码:
XCPlaygroundPage.currentPage.finishExecution()