Sobes.tech
Junior — Middle

Je možné prerušiť vykonávanie úlohy spustenej cez NSOperation?

sobes.tech AI

Odpoveď od AI

Áno, je možné sa pokúsiť zrušiť úlohu spustenú cez NSOperation volaním metódy cancel() na operácii. Je však dôležité pochopiť, že volanie cancel() nezastaví operáciu okamžite — iba nastaví vlajku zrušenia. Vaša úloha by mala pravidelne kontrolovať vlastnosť isCancelled a správne ukončiť, ak je operácia zrušená.

Príklad:

class MyOperation: Operation {
    override func main() {
        for i in 0..<1000 {
            if isCancelled {
                print("Operácia zrušená")
                return
            }
            // Vykonanie úlohy
            print(i)
        }
    }
}

let operation = MyOperation()
operationQueue.addOperation(operation)

// Neskôr
operation.cancel() // Pokus o zrušenie operácie

Takže, zrušenie je kooperatívna akcia a operácia by mala pravidelne kontrolovať vlajku zrušenia, aby sa správne prerušila.