首页 > 解决方案 > 为什么我在 viewDidLoad 中同步崩溃,有人知道发生这种情况的原因吗?

问题描述

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")
       }
   }
}

在 viewDidLoad 中使用同步方法崩溃,但它与异步一起工作,我不知道这背后的原因,谁能帮助我。

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

标签: swiftgrand-central-dispatch

解决方案


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


推荐阅读