Вопрос проверяет знание OperationQueue и управления асинхронными операциями.
OperationQueue позволяет отменять отдельные операции или все сразу. Метод cancel() помечает операцию как отмененную. Есть также cancelAllOperations(). Операция должна сама корректно реагировать на отмену.
OperationQueue предоставляет более высокий уровень управления по сравнению с GCD.
В начале важно понимать, что отмена — это сигнал, а не принудительное завершение.
Доступные варианты:
operation.cancel() — отмена конкретной операции
queue.cancelAllOperations() — отмена всех операций
Проверка isCancelled внутри main или start
class ExampleOperation: Operation {
override func main() {
if isCancelled { return }
// длительная работа
}
}
Если операция отменена:
зависимые операции могут не запуститься
очередь корректно пересчитает зависимости
OperationQueue дает гибкий контроль над отменой задач, но ответственность за корректное завершение лежит на самой операции.