Отправлять очереди несколькими методами?iPhone - PullRequest
0 голосов
/ 16 декабря 2011

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

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^  {  

    [activeModel release];
    [mainViewController showSceneList];
    [mainViewController removeTidyUpScreen];

});

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

1 Ответ

2 голосов
/ 17 декабря 2011

Думайте о блоке - код, который вы отправляете в очередь отправки, как здесь, - как анонимная функция.Итак, код, который у вас есть в вашем блоке, выполняется в таком порядке, как если бы вы вызывали функцию, которая содержала те же вызовы, один метод, затем следующий и т. Д.

В вашем конкретном примере этоПохоже, вы можете выполнять некоторые операции с пользовательским интерфейсом в очереди, которая не является основной.Вы ДОЛЖНЫ выполнять операции пользовательского интерфейса в основной очереди, поскольку он имеет доступ к пользовательскому интерфейсу.Вместо этого вы можете использовать dispatch_get_main_queue(), чтобы убедиться, что вы получаете эту очередь.Если у вас есть что-то, что вы хотите запустить в фоновом режиме, которое не будет касаться пользовательского интерфейса, тогда использование глобальной очереди - это нормально, и это предпочтительнее, особенно если важно не останавливать пользовательский интерфейс.

...