Sobes.tech
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.