Преимущество использования DispatchGroup по сравнению с базовым классом счетчиков
У меня есть ситуация, когда мне нужно дождаться завершения группы задач, прежде чем выполнять некоторый код рендеринга пользовательского интерфейса.
Некоторые из этих задач представляют собой сетевые запросы, которые всегда завершаются и покидают группу диспетчеризации. Однако некоторые из них не являются сетевыми запросами и могут быть выполнены или не выполнены. В случае, если одна задача не завершена и вызовы для выхода никогда не уравновешивают входящие вызовы, DispatchGroup никогда не освобождается.
Есть ли способ обойти это с помощью DispatchGroup? Или мне просто самому реализовать простой счетчик.
1 ответ
Вы все равно должны использовать DispatchGroup
потому что он менее сложный и мощный. ТочкаDispatchGroup
состоит в том, чтобы добавить dispatchGroup.enter()
в каждом выполняемом вами методе, который вы хотите завершить в первую очередь перед выполнением обновления пользовательского интерфейса, это любой метод, такой как сетевой запрос, обновление ваших объектов и т.д. dispatchGroup.leave()
чтобы сохранить баланс, и я уверен, что dispatchGroup.notify
будет называться.