为什么此线程不执行最后一行代码

时间:2018-12-04 15:21:45

标签: ios nsrunloop

我创建了一个线程。而且我发现此线程不会执行最后一行代码。

let thread = Thread {
    RunLoop.current.add(NSMachPort(), forMode: RunLoopMode.commonModes)
    let runloop = CFRunLoopGetCurrent()
    print("A")
    CFRunLoopRun()
    print("B")
}

然后我调用此线程'thread.start()'。但是它只能打印'A'。

1 个答案:

答案 0 :(得分:2)

CFRunLoop()是一个无限期运行的函数,直到停止为止。 这意味着上面的代码基本上是:

print("A")
while true {
  // execute run loop 
}
print("B")

直到停止运行循环,才能调用最后一行。