Sobes.tech
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 de enter().
  • 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.