Назад к вопросам
Иннотех
Т-Банк
Junior — Middle
86
Можно ли прервать выполнение задачи, запущенной через NSOperation?
Компании, где спрашивали
Ответ от нейросети
sobes.tech 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 (взаимное) действие, и операция должна поддерживать проверку флага отмены для корректного прерывания.