Sobes.tech
Junior — Middle

Comment peut-on interrompre l'exécution d'une opération asynchrone?

sobes.tech IA

Réponse de l'IA

En iOS, on utilise généralement les approches suivantes pour interrompre une opération asynchrone :

  1. Annuler une tâche URLSession — si l’opération asynchrone est liée à une requête réseau, vous pouvez appeler la méthode cancel() sur l’objet URLSessionTask.

  2. Utilisation de DispatchWorkItem — lors de l’utilisation de GCD, vous pouvez créer un DispatchWorkItem et appeler cancel() pour tenter d’interrompre son exécution.

  3. Combine et Swift Concurrency — dans Combine, vous pouvez annuler l’abonnement (AnyCancellable), et dans Swift Concurrency (async/await), utiliser Task et appeler cancel().

Exemple avec Task en Swift Concurrency :

let task = Task {
    for i in 1...10 {
        try Task.checkCancellation() // Vérification de l’annulation
        print(i)
        try await Task.sleep(nanoseconds: 1_000_000_000)
    }
}

// Plus tard, pour annuler :
task.cancel()

Il est important que l’opération asynchrone inclue une vérification de l’annulation, sinon elle continuera à s’exécuter.