executeSelectorOnMainThread работает, но executeSelector не почему? - PullRequest
0 голосов
/ 03 октября 2009

У меня есть селектор и цель, и вызывает метод, подобный этому

[target performSelectorOnMainThread:(SEL)selector withObject:nil waitUntilDone:FALSE];

Но после того, как я изменил это на это, оно не работает

[target performSelector:(SEL)selector withObject:nil afterDelay:0];

Есть идеи?

Я не хочу выполнять эту задачу в главном потоке, потому что он отстает от пользовательского интерфейса.

Под не работает я имею в виду, что он просто не вызывает метод. У меня есть режим im debu в симуляторе и подтвердил, что он не вызывался.

1 Ответ

11 голосов
/ 03 октября 2009

Я предполагаю, что вы отправляете сообщение не из основного потока. Какао просто создает цикл выполнения для основного потока, для других потоков вы должны создать его самостоятельно. Метод performSelector:withObject:afterDelay: планирует сообщение для следующего прохода в цикле выполнения. Так что если его нет, сообщение не будет отправлено.

Для вашего случая, почему бы вам просто не отправить [target performSelector:selector withObject:nil];? Для этого вам не нужен цикл выполнения, и сообщение будет отправлено немедленно (в том же потоке).

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