【问题标题】:Why this thread doesn't execute last line code为什么这个线程不执行最后一行代码
【发布时间】:2018-12-04 15:21:44
【问题描述】:

我创建了一个线程。而且我发现这个线程没有执行最后一行代码。

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

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

【问题讨论】:

    标签: ios nsrunloop


    【解决方案1】:

    CFRunLoop() 是一个无限期运行的函数,直到它停止。 也就是说上面的代码基本上是:

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

    在停止运行循环之前不能调用最后一行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      相关资源
      最近更新 更多