Sobes.tech
Junior — Middle

Wie kann man die Ausführung einer asynchronen Operation abbrechen?

sobes.tech KI

Antwort von AI

In iOS werden zum Abbrechen einer asynchronen Operation in der Regel folgende Ansätze verwendet:

  1. Abbrechen der URLSession-Aufgabe — wenn die asynchrone Operation mit einer Netzwerk-Anfrage verbunden ist, kann die Methode cancel() am URLSessionTask-Objekt aufgerufen werden.

  2. Verwendung von DispatchWorkItem — bei der Arbeit mit GCD kann ein DispatchWorkItem erstellt und cancel() aufgerufen werden, um zu versuchen, die Ausführung abzubrechen.

  3. Combine und Swift Concurrency — in Combine kann man die Subscription (AnyCancellable) abbrechen, und in Swift Concurrency (async/await) kann man Task verwenden und cancel() aufrufen.

Beispiel mit Task in Swift Concurrency:

let task = Task {
    for i in 1...10 {
        try Task.checkCancellation() // Abfrage auf Abbruch
        print(i)
        try await Task.sleep(nanoseconds: 1_000_000_000)
    }
}

// Später, um abzubrechen:
task.cancel()

Wichtig ist, dass innerhalb der asynchronen Operation eine Abbruchprüfung implementiert ist, da sonst die Operation weiterläuft.