Выполнение метода App Delegate в основном потоке из вторичного потока

У меня есть приложение для iPhone с двумя потоками. Один слушает сервер, а другой занимается UIKit, OpenGl.

Мне нужно запустить метод, который обновляет представление из вторичного потока, который прослушивает сервер в основном потоке, который обрабатывает представления, поэтому я использовал

performSelectorOnMainThread:@selector"createGuessingView" withObject:nil waitUntilDone:YES

но по какой-то причине метод никогда не выполняется. Помещение точки останова или printf в начале метода показывает, что он никогда не вызывался. Я действительно озадачен здесь. Я использовал performselectoronmainthread в той же программе для обновления текстовых полей, и она работала безупречно.

редактировать:

Разобрался :) Проблема заключалась в том, что объект, который я использовал PerformSelectorOnMainThread, был установлен этим потоком до того, как объект был инициализирован (даже выделен) в основном потоке. Следовательно, ссылка указывала на null, и селектор не распознавался.

Спасибо за помощь


person MEURSAULT    schedule 23.08.2010    source источник
comment
Вы уверены, что получатель для вызова PerformSelectorOnMainThread не нулевой?   -  person imaginaryboy    schedule 23.08.2010


Ответы (1)


Разве это не должно быть:

@selector(createGuessingView)

без кавычек.

--

РЕДАКТИРОВАТЬ (в ответ на комментарий)

Какая подпись для вашего метода? Если это:

- (void)createGuessingView:(id)something

тогда вы должны запомнить двоеточие, как в @selector(createGuessingView:)

person No one in particular    schedule 23.08.2010
comment
о да, извините, это то, что у меня есть, я просто неправильно скопировал, есть другие идеи? - person MEURSAULT; 23.08.2010
comment
подпись - (void) createGuessingView; без параметров - person MEURSAULT; 23.08.2010
comment
Вы вызываете метод PerformSelectorOnMainThread для экземпляра объекта, имеющего метод createGuessingView? - person No one in particular; 23.08.2010