Junior — Middle
105
Kas on võimalik peatada NSOperationi kaudu käivitunud ülesande täitmine?
Ettevõtted, kust küsiti
Vastus AI-lt
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 (взаимное) действие, и операция должна поддерживать проверку флага отмены для корректного прерывания.