Sobes.tech
Junior — Middle

Jak można anulować zadanie znajdujące się w kolejce przed jego rozpoczęciem?

sobes.tech AI

Odpowiedź od AI

Na iOS, aby anulować zadanie znajdujące się w kolejce, ale jeszcze nie uruchomione, można wywołać metodę cancel() na obiekcie zadania (np. Operation lub URLSessionTask). Jeśli zadanie jeszcze się nie rozpoczęło, zostanie anulowane i nie zostanie uruchomione.

Przykład z użyciem OperationQueue:

let operationQueue = OperationQueue()
let operation = BlockOperation {
    print("Wykonywanie zadania")
}
operationQueue.addOperation(operation)

// Anuluj zadanie przed jego uruchomieniem
operation.cancel()

Jeśli zadanie jest już w trakcie wykonywania, anulowanie może nie zatrzymać go natychmiast, dlatego wewnątrz zadania należy sprawdzać flagę isCancelled i poprawnie je zakończyć.