Вызывает executeSelectorOnMainThread => Многопоточное приложение? - PullRequest
4 голосов
/ 21 октября 2008

Я заметил, что следующий банальный звонок из моей основной ветки

[self performSelectorOnMainThread:@selector(rollBar:)
      withObject:nil
      waitUntilDone:false];

заставлял [NSThread isMultiThreaded] сообщить, что мое приложение
стал многопоточным. Я думал, что это только предполагалось
произойдет, когда вы отсоедините поток, то, что стоит в очереди
сообщение в пределах одного потока не должно делать.

Есть идеи?

Этот вопрос не совпадает с с этим один.

Стоп пресс
Моя вина, rollBar: называется [m_progress_bar incrementBy: 0.5];.
За симпатичную, обворожительную, анимационную NSProgressIndicator отвечает
за то, что мое приложение стало многопоточным. Что удивительно.
Я этого не знал.

Удивительно, но [m_progress_bar usesThreadedAnimation] всегда
возвращает NO, даже если бар зависает, когда мое приложение зависает.

1 Ответ

6 голосов
/ 21 октября 2008

Ты уверен в этом? Я поместил следующий код в метод init моего appDelegate:

NSLog(@"Multi-threaded before? %@", [NSThread isMultiThreaded] ? @"Yes" : @"No"); [self performSelectorOnMainThread: @selector(setDelegate:) withObject: self waitUntilDone: NO]; NSLog(@"Multi-threaded after? %@", [NSThread isMultiThreaded] ? @"Yes" : @"No");

и получил этот результат в консоли:

<b><pre> 2008-10-21 07:26:28.296 MyApplication[82963:20b] Multi-threaded before? No 2008-10-21 07:26:28.297 MyApplication[82963:20b] Multi-threaded after? No </pre></b>

Я также добавил второй оператор NSLog(...) в мой applicationWillTerminate: метод, и он также сказал мне, что он не многопоточный.

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