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 deenter(). - 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.