为什么我在同步时在 viewDidLoad 中崩溃,谁能知道发生这种情况的原因?

Roh*_*mar 0 grand-central-dispatch swift

class ViewController: UIViewController {
   override func viewDidLoad() {
       // Do any additional setup after loading the view.
       DispatchQueue.main.sync { //this line crashes with Thread 1 : EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
          print("Rohit Kumar")
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

在 viewDidLoad 中使用同步方法崩溃,但它适用于异步,我不知道这背后的原因,任何人都可以帮助我。

我知道同步和异步之间的区别。

Sh_*_*han 6

当您sync在主线程中使用时,应用程序崩溃,默认情况下代码在主线程中运行,因此当您调度代码时,通常在另一个队列中而不是主线程本身,这会导致队列停止并等待直到内部的块{}完成并且因为它的状态是停止/等待然后块内的代码不会运行因此死锁