Многопоточность: выполнение вызовов метода только после завершения выполнения другого метода

Я пытаюсь обработать метод асинхронно, в соответствии с требованиями, как только первый метод завершен, только тогда второй метод должен начать выполняться. Проблема в том, что первый метод сам по себе имеет код, который выполняется в фоновом потоке.

Я попытался dispatch_semaphore_wait, но это тоже не сработало.

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);

        dispatch_group_t group = dispatch_group_create();


        dispatch_group_async(group, queue, ^{

            [self firstMethod];
            NSLog(@"firstMethod Done");

        });
        dispatch_group_notify(group, queue, ^ {

            NSLog(@"1st method completed");
            NSLog(@"2nd method starting");

            [self secondMethod];

        });

FirstMethod сам работает на другом рабочем потоке, как это

-(void)firstMethod
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
   //processing here.....       

 }];

Каков наилучший способ добиться этого, я не могу изменить определение firstMethod, так как оно предоставлено какой-то третьей стороной, а также изменение его означает изменение большого количества существующего кода, из которого вызывается этот метод

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

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