使用 DispatchQueue.main.sync 时应用程序崩溃

Application is crashing while using DispatchQueue.main.sync

我正在用 Grand Central Dispatch 做实验,遇到同步任务崩溃。

func viewDidLoad() {
    super.viewDidLoad()

    self.testHello()
    print("Task2")
}

func testHello() {
    DispatchQueue.main.sync {
        print("Task1")
    }
}

执行上述给定函数后,我面临崩溃。

如能解释上述崩溃,将不胜感激。

来自 DispatchQueue.sync 文档:

...this function does not return until the block has finished. Calling this function and targeting the current queue results in deadlock.

您已经在主队列中,并且强制代码在主队列上同步执行。您在主队列中的事实意味着现在无法在队列上执行其他代码,但是,sync 等待该代码执行,因此您使队列和整个应用程序陷入死锁。