Sobes.tech
Назад к вопросам
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 (взаимное) действие, и операция должна поддерживать проверку флага отмены для корректного прерывания.