Вопрос проверяет знания об объектно-ориентированном обёртывании GCD в Operation и преимуществах OperationQueue.
NSOperation (теперь Operation) предоставляет возможности: отмена с поддержкой флагов, зависимость задач (addDependency), приоритеты, KVO-отслеживание состояний, а OperationQueue упрощает управление максимальным числом одновременных операций и очередью выполнения.
Класс Operation:
Наследуется и переопределяет метод main() или start().
Поддерживает встроенные свойства: isCancelled, isFinished, isExecuting.
Зависимости:
let op1 = BlockOperation { /* ... */ }
let op2 = BlockOperation { /* ... */ }
op2.addDependency(op1)
queue.addOperations([op1, op2], waitUntilFinished: false)Отмена и приоритеты:
При вызове op.cancel() операция помечается как отменённая.
Свойство queue.maxConcurrentOperationCount задаёт уровень параллелизма.
qualityOfService и queuePriority влияют на планирование.
KVO и состояние:
Можно наблюдать за изменением isFinished и запускать UI-обновления при завершении.
Вывод:Operation и OperationQueue обеспечивают более гибкую модель управления задачами, удобную для сложных сценариев с зависимостями и отменой.