Sobes.tech
Junior — Middle

¿Puedes enumerar y explicar los métodos principales para trabajar con DispatchGroup en iOS?

sobes.tech AI

Respuesta de la IA

DispatchGroup en iOS se utiliza para agrupar varias tareas asíncronas y hacer un seguimiento de su finalización. Los métodos principales y formas de trabajar con DispatchGroup:

  • enter() — informa al grupo que ha comenzado una nueva tarea. Debe llamarse si la tarea se inicia manualmente y no a través de group.async.
  • leave() — informa al grupo que la tarea ha finalizado. La cantidad de llamadas a leave() debe coincidir con la cantidad de enter().
  • notify(queue: DispatchQueue, execute: () -> Void) — establece un bloque de código que se ejecutará en la cola especificada después de que todas las tareas en el grupo hayan finalizado.
  • wait(timeout:) — espera de forma síncrona a que finalicen todas las tareas en el grupo, o hasta que expire el tiempo de espera.

Ejemplo de uso:

let group = DispatchGroup()

let queue = DispatchQueue.global()

group.enter()
queue.async {
    // Tarea asíncrona 1
    print("Tarea 1 iniciada")
    sleep(2)
    print("Tarea 1 finalizada")
    group.leave()
}

group.enter()
queue.async {
    // Tarea asíncrona 2
    print("Tarea 2 iniciada")
    sleep(1)
    print("Tarea 2 finalizada")
    group.leave()
}

group.notify(queue: DispatchQueue.main) {
    print("Todas las tareas han finalizado")
}

En este ejemplo, dos tareas se ejecutan en paralelo, y después de su finalización, se llama al bloque en notify. Este enfoque permite sincronizar varias operaciones asíncronas de manera conveniente.