Я только что прочитал длинное введение в NSOperationQueues и NSOperation здесь .
Мой вопрос следующий. Мне нужно запустить две операции одновременно. Когда обе эти задачи завершены, мне нужно сделать еще один расчет на основе результатов двух завершенных операций. Если одна из операций завершается неудачей, вся операция также должна завершиться неудачей. Эти две операции не имеют зависимостей и полностью независимы друг от друга, поэтому мы можем запускать их параллельно.
Как дождаться окончания этой 2 операции и затем продолжить вычисления? Я не хочу блокировать поток пользовательского интерфейса. Если я сделаю еще одну NSOperation, то основным методом будет создание двух NSOperations, добавьте их в некоторую локальную (для этой операции) очередь и подождите с методом waitUntilAllOperationsAreFinished
. Тогда продолжить расчеты?
Мне не нравится в этом подходе необходимость создавать локальную очередь каждый раз, когда я создаю новую операцию. Могу ли я спроектировать его так, чтобы я мог повторно использовать одну очередь, но ждать только двух локальных операций? Я могу представить, что метод waitUntilAllOperationsAreFinished
может подождать, пока все задачи не будут выполнены, поэтому он будет блокироваться, когда много задач будет выполняться параллельно. Любой совет дизайна? Создание NSOperationQueue
дорого? Есть ли лучшие способы сделать это в iOS без использования NSOperation
& NSOperationQueue
? Я использую устройства iOS 9+.