1

我需要在一个单独的线程中一个一个地做一些方法而不会中断,就像我在课堂上那样

fileprivate var queue = DispatchQueue(label: "ProgressHUD", qos: .userInteractive)

当我需要显示/隐藏时,我会这样做

queue.sync {
    __hide()
}

或者

queue.sync {
    __show()
}

在这种__%%()方法中,我需要在主线程中对 UI 进行一些操作,并且我需要从 --show/--hide 中执行所有操作,而不会中断。所以在内部,我使用

private func __show()
{
    let g = DispatchGroup()
    g.enter()
    DispatchQueue.main.async {
        print("go?")
        self.doMyAction1()
        self.doMyAction2()
        self.doMyAction3()

        g.leave()
    }
    g.wait()
}

但该应用程序始终在线冻结,g.wait()不调用main.async也不打印go?。我做错了什么!?

4

1 回答 1

0
func dispatchGroup() -> String {

   var message = ""

   let group = DispatchGroup()

   group.enter()

   DispatchQueue.global(qos: .background).asyncAfter(deadline: .now() + 5) {
        message = "Hiii Friends"
        group.leave()
   }

   group.wait()

   return message
}
于 2020-12-08T11:43:53.853 回答