Как переключаться между первичным и вторичным потоком в разных контроллерах в какао - PullRequest
0 голосов
/ 16 апреля 2009

Я знаю, что могу создать отдельную тему в контакте с какао с помощью следующего кода:

       [NSThread detachNewThreadSelector:@selector(getEarthquakeData) toTarget:self withObject:nil];

Как вернуться к процессу моего основного потока? Я знаю, что могу сделать это от делегата с этим кодом:

    [(id)[[UIApplication sharedApplication] delegate] performSelectorOnMainThread:@selector(addToEarthquakeList:) withObject:self.currentEarthquakeObject waitUntilDone:YES];

Как бы я это сделал, если бы основной поток работал в контроллере, а не в делегате, как указано выше.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 апреля 2009

Разве вы не можете просто сделать:

[controller performSelectorOnMainThread:@selector(addToEarthquakeList:) withObject:self.currentEarthquakeObject waitUntilDone:YES];

... или я неверно истолковал ваш вопрос? (Я думал, вы спрашивали, как запустить метод контроллера в главном потоке.)

0 голосов
/ 16 апреля 2009

У вас есть правильные звонки. Когда вы вызываете performSelectorOnMainThread:..., ваш запрос помещается в очередь в цикле выполнения основного потока, то есть, если основной поток выполняется где-то еще в то время, когда обработка будет завершена первой. Как только код вашего основного потока возвращается обратно в цикл выполнения, можно просмотреть и вызвать запрос из фонового потока.

Я не знаю, что определяет приоритет, если есть другие события, поставленные в очередь для цикла выполнения, но в целом я не думаю, что вы можете положиться на него, даже если он будет выполнен в следующий раз. Это еще одна причина, по которой вам следует стараться свести к минимуму последовательную обработку вашего основного потока (т. Е. Стараться не иметь долго выполняющихся последовательностей в основном потоке - но, вероятно, именно поэтому вы используете фоновый поток в первую очередь).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...