выполнение в фоновом режиме и основной поток IOS - PullRequest
0 голосов
/ 07 марта 2011

У меня есть функция foo (), которая вызывает функциональную панель в фоновом потоке foo() {</p> <pre><code> [self performSelectorInBackground:@selector(bar:) withObject:nil];

}

 bar()
{
//some initialsations
//calling another function
bar1();//also in background
 //after bar1() returns
 //marking following statement with *       
      [self performSelectorOnMainThread:@selector(stopActivityIndicator:)withObject:nil     wailUntilDone:YES];

  }

bar () делает некоторые вещи перед вызовомдругая функция.Все, что делает bar () - это фон.Тем временем я показываю ActivityIndicator.Как только моя функция внутри bar () возвращается, я вызываю функцию, которая остановитActivityIndicator в MainThread.

Теперь я хочу вызвать другую функцию в MainThread перед вызовом stopActivityIndicator (). Как это сделать?Могу ли я поставить еще один [self performSelectorOnMainThread:@selector(functionIWantToCall:)withObject:nil wailUntilDone:YES]; перед *?

1 Ответ

2 голосов
/ 24 января 2013

Вы можете отправить блок для запуска в главном потоке и поместить в него любой необходимый код:

[[NSOperationQueue mainQueue] addOperationWithBlock:^ {

   // Code here
   NSLog(@"This is the main thread");

}];

Используя ваш код, он станет:

bar()
{
    bar1();

    [[NSOperationQueue mainQueue] addOperationWithBlock:^ {
        [stopActivityIndidator];
        [functionIWant];
    }];
}
...