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.