Как ждать окончания потока в Objective-C

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

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



- (void)main
{
    [self doStuffInOperations];
}

- (void)doStuffInGCD
{
    dispatch_group_t d_group = dispatch_group_create();
    dispatch_queue_t bg_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_group_async(d_group, bg_queue, ^{
        [self doSomething:@"a"];
    });

    dispatch_group_async(d_group, bg_queue, ^{
        [self doSomething:@"b"];
    });

    dispatch_group_async(d_group, bg_queue, ^{
        [self doSomething:@"c"];
    });


    // you can do this to synchronously wait on the current thread:
    dispatch_group_wait(d_group, DISPATCH_TIME_FOREVER);
    dispatch_release(d_group);
    NSLog(@"All background tasks are done!!");


    // ****  OR  ****

    // this if you just want something to happen after those are all done:
    dispatch_group_notify(d_group, dispatch_get_main_queue(), ^{
        dispatch_release(d_group);
        NSLog(@"All background tasks are done!!");        
    });
}

- (void)doSomething:(id)arg
{
    // do whatever you want with the arg here 
}
 AdamM23 нояб. 2012 г., 09:47
Ура! Этот метод еще лучше
 user518034828 июн. 2018 г., 08:32
Здорово! В моем недавнем интервью они задали мне ту же концепцию! Спасибо за спасение моей жизни
 Abizern18 авг. 2013 г., 11:31
+1 за правильный ответ.
 jpswain18 авг. 2013 г., 22:16
@node ninja Не могли бы вы выбрать ответ на свой вопрос?

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