Sobes.tech
Junior — Middle

Pouvez-vous énumérer et expliquer les principales méthodes pour travailler avec DispatchGroup sur iOS?

sobes.tech IA

Réponse de l'IA

DispatchGroup en iOS est utilisé pour regrouper plusieurs tâches asynchrones et suivre leur achèvement. Les méthodes principales et façons de travailler avec DispatchGroup :

  • enter() — informe le groupe qu'une nouvelle tâche a commencé. Doit être appelé si la tâche est lancée manuellement et non via group.async.
  • leave() — informe le groupe que la tâche est terminée. Le nombre d'appels à leave() doit correspondre au nombre de enter().
  • notify(queue: DispatchQueue, execute: () -> Void) — définit un bloc de code qui sera exécuté sur la file d'attente spécifiée après que toutes les tâches du groupe soient terminées.
  • wait(timeout:) — attend de manière synchrone que toutes les tâches du groupe soient terminées, ou jusqu'à l'expiration du délai.

Exemple d'utilisation :

let group = DispatchGroup()

let queue = DispatchQueue.global()

group.enter()
queue.async {
    // Tâche asynchrone 1
    print("Tâche 1 démarrée")
    sleep(2)
    print("Tâche 1 terminée")
    group.leave()
}

group.enter()
queue.async {
    // Tâche asynchrone 2
    print("Tâche 2 démarrée")
    sleep(1)
    print("Tâche 2 terminée")
    group.leave()
}

group.notify(queue: DispatchQueue.main) {
    print("Toutes les tâches sont terminées")
}

Dans cet exemple, deux tâches s'exécutent en parallèle, et après leur achèvement, un bloc dans notify est appelé. Cette approche permet de synchroniser plusieurs opérations asynchrones de manière pratique.