Подождите, пока все блоки iOS будут выполнены, прежде чем двигаться дальше

У меня есть объект модели данных / хранилища, который взаимодействует с Интернетом через несколько API, содержащих данные. Число API-интерфейсов, с которыми необходимо взаимодействовать, является динамическим: с концептуальной точки зрения мы можем рассматривать конечные точки как строки в NSMutableArray. Проблема в том, что я хочу уведомить мнения / других наблюдателей об обновленных данных послепрошлой вызов конечной точки / API завершен. Я попробовал диспетчеризацию GCD, но следующая схема не работает должным образом:

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();

dispatch_group_async(group, queue, ^{

    for(MyAPIEndpoint __weak __block *ep in apiList)
    {

       [self runAPI:ep withCompletionBlock:^(MyAPIEndpoint *api, NSError *err)
       {
           // update the data model here, code omitted as it's not relevant
       }
       ];
    }
});

dispatch_group_wait(group, DISPATCH_TIME_FOREVER);

// this statement must only execute AFTER the last block in the for loop above is done
[[NSNotificationCenter defaultCenter] postNotificationName:@"apiDataUpdated" object:self];

Тем не менее, это не похоже на работу; кажется, что код внутри этого вызова [self runAPI ...] никогда не выполняется вообще?

Ответы на вопрос(1)

Ваш ответ на вопрос