Вопрос проверяет знание OperationQueue и умение объяснить, как управлять порядком выполнения асинхронных задач.
OperationQueue позволяет задавать зависимости между операциями. Одна операция может стартовать только после завершения другой. Это делается через метод addDependency. Такой подход упрощает управление сложными сценариями. В отличие от GCD, зависимости здесь встроены.
OperationQueue — это более высокоуровневая альтернатива GCD для сложных сценариев.
Каждая Operation:
представляет отдельную задачу
знает свое состояние
может зависеть от других операций
Перед запуском операций явно указывается порядок выполнения.
operationB.addDependency(operationA)
Это означает:
operationB не начнется
пока operationA полностью не завершится
Явный порядок выполнения
Очевидно, какая операция от чего зависит.
Читаемость кода
Логика последовательности видна прямо в коде.
Масштабируемость
Можно строить цепочки и графы операций.
Совместимость с отменой
Если операция отменена, зависимые могут корректно отреагировать.
GCD — низкоуровневый
OperationQueue — декларативный и управляемый
Зависимости в OperationQueue позволяют управлять сложными асинхронными сценариями без ручной синхронизации и блокировок.