Очередь отправки зависает в основной очереди

#swift #dispatch-queue #dispatchgroup

#swift #отправка-очередь #dispatchgroup

Вопрос:

Мне нужно выполнять некоторые методы один за другим, не прерывая, в отдельном потоке, как у меня в моем классе

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

и когда мне нужно показать / скрыть, я делаю что-то вроде этого

 queue.sync {
    __hide()
}
 

или

 queue.sync {
    __show()
}
 

в этих __%%() методах мне нужно выполнить некоторые действия с пользовательским интерфейсом в основном потоке, и мне нужно выполнять все действия из —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? . Что я делаю не так !?

Ответ №1:

 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
}
 

Комментарии:

1. Я уже читал эту тему перед своим сообщением (где вы скопировали вставленный текст), но не понимаю, что я делаю не так?