Junior — Middle
Podes listar e explicar os principais métodos de trabalho com DispatchGroup no iOS?
sobes.tech IA
Resposta da IA
O DispatchGroup no iOS é utilizado para agrupar várias tarefas assíncronas e acompanhar a sua conclusão. Os principais métodos e formas de trabalhar com DispatchGroup:
- enter() — informa ao grupo que uma nova tarefa começou. Deve ser chamado se a tarefa for iniciada manualmente e não através de
group.async. - leave() — informa ao grupo que a tarefa terminou. A quantidade de chamadas a
leave()deve corresponder à quantidade deenter(). - notify(queue: DispatchQueue, execute: () -> Void) — define um bloco de código que será executado na fila especificada após todas as tarefas do grupo serem concluídas.
- wait(timeout:) — espera de forma síncrona que todas as tarefas do grupo terminem, ou até que o tempo limite expire.
Exemplo de uso:
let group = DispatchGroup()
let queue = DispatchQueue.global()
group.enter()
queue.async {
// Tarefa assíncrona 1
print("Tarefa 1 iniciada")
sleep(2)
print("Tarefa 1 terminada")
group.leave()
}
group.enter()
queue.async {
// Tarefa assíncrona 2
print("Tarefa 2 iniciada")
sleep(1)
print("Tarefa 2 terminada")
group.leave()
}
group.notify(queue: DispatchQueue.main) {
print("Todas as tarefas foram concluídas")
}
Neste exemplo, duas tarefas são executadas em paralelo, e após a sua conclusão, é chamado o bloco em notify. Esta abordagem permite sincronizar várias operações assíncronas de forma conveniente.