Преимущество использования DispatchGroup по сравнению с базовым классом счетчиков

У меня есть ситуация, когда мне нужно дождаться завершения группы задач, прежде чем выполнять некоторый код рендеринга пользовательского интерфейса.

Некоторые из этих задач представляют собой сетевые запросы, которые всегда завершаются и покидают группу диспетчеризации. Однако некоторые из них не являются сетевыми запросами и могут быть выполнены или не выполнены. В случае, если одна задача не завершена и вызовы для выхода никогда не уравновешивают входящие вызовы, DispatchGroup никогда не освобождается.

Есть ли способ обойти это с помощью DispatchGroup? Или мне просто самому реализовать простой счетчик.

1 ответ

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

Другие вопросы по тегам