Какое API предоставляет OperationQueue в iOS?

«Какое API предоставляет OperationQueue в iOS?» — вопрос из категории Многопоточность, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, OperationQueue предоставляет API для управления очередями операций (NSOperation). Основные методы и свойства:

  • Управление операциями:
    • addOperation(_:) – добавляет одну операцию.
    • addOperations(_:waitUntilFinished:) – добавляет массив операций.
    • cancelAllOperations() – отменяет все ожидающие и выполняющиеся операции.
  • Конфигурация очереди:
    • maxConcurrentOperationCount – максимальное количество одновременно выполняемых операций. Значение по умолчанию (-1) позволяет системе определять оптимальное количество.
    • qualityOfService – приоритет очереди (например, .userInitiated, .utility).
    • isSuspended – приостанавливает запуск новых операций (уже выполняющиеся не затрагиваются).
  • Состояние: operationCount, operations.

Пример использования:

let processingQueue = OperationQueue()
processingQueue.maxConcurrentOperationCount = 2
processingQueue.qualityOfService = .userInitiated

let downloadOp = BlockOperation {
    // Загрузка данных
    print("Downloading...")
}

let parseOp = BlockOperation {
    // Парсинг данных
    print("Parsing...")
}
parseOp.addDependency(downloadOp) // Парсинг начнется только после загрузки

processingQueue.addOperations([downloadOp, parseOp], waitUntilFinished: false)