Junior — Middle
109
Vai ir iespējams pārtraukt uzdevuma izpildi, kas uzsākts, izmantojot NSOperation?
Uzņēmumi, kur jautāja
Atbilde no AI
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 (взаимное) действие, и операция должна поддерживать проверку флага отмены для корректного прерывания.