Junior — Middle
É possível interromper a execução de uma tarefa iniciada através do NSOperation?
sobes.tech IA
Resposta da IA
Sim, é possível tentar cancelar uma tarefa iniciada através do NSOperation chamando o método cancel() na operação. No entanto, é importante entender que chamar cancel() não interrompe a operação instantaneamente; ele apenas define uma bandeira de cancelamento. Sua tarefa deve verificar periodicamente a propriedade isCancelled e encerrar corretamente se a operação for cancelada.
Exemplo:
class MyOperation: Operation {
override func main() {
for i in 0..<1000 {
if isCancelled {
print("Operação cancelada")
return
}
// Executar tarefa
print(i)
}
}
}
let operation = MyOperation()
operationQueue.addOperation(operation)
// Mais tarde
operation.cancel() // Tentativa de cancelar a operação
Portanto, o cancelamento é uma ação cooperativa, e a operação deve verificar a bandeira de cancelamento para interromper corretamente.