Junior — Middle
Is het mogelijk om de uitvoering van een taak gestart via NSOperation te onderbreken?
sobes.tech AI
Antwoord van AI
Да, выполнение задачи, запущенной через NSOperation, можно попытаться прервать, вызвав метод cancel() у операции. Однако важно понимать, что вызов cancel() не останавливает операцию мгновенно — он лишь устанавливает флаг отмены. Ваша задача должна периодически проверять свойство isCancelled и корректно завершать выполнение, если операция отменена.
Пример:
class MyOperation: Operation {
override func main() {
for i in 0..<1000 {
if isCancelled {
print("Операция отменена")
return
}
// Выполнение задачи
print(i)
}
}
}
let operation = MyOperation()
operationQueue.addOperation(operation)
// Позже
operation.cancel() // Попытка отмены операции
Таким образом, отмена — это cooperative (взаимное) действие, и операция должна поддерживать проверку флага отмены для корректного прерывания.