Я хочу знать, как дочерний поток может общаться с родительским потоком в Objective C. Я порождаю поток из своего основного потока и хочу рассказать основному потоку о каком-либо действии и продолжать работу. Как этого добиться?
the same thread
Информация между потоками может передаваться с помощью свойства threadDictionary NSThread.Я предпочитаю использовать это для регистрации некоторых переменных состояния.Например, при прокрутке я установлю следующее.
NSMutableDictionary *dictInfo = [NSThread mainThread].threadDictionary; [dictInfo setObject:[NSNumber numberWithbool:YES] forKey:_kThreadPause];
Рабочий поток перейдет в спящий режим, когда увидит, что для _kThreadPause установлено значение YES.
<code> BOOL bPause = [[[NSThread mainThread].threadDictionary objectForKey:_kThreadPause] boolValue]; if (bPause) [NSThread sleepForTimeInterval:0.1];
Как сказал DavidNeiss, вы можете использовать методы NSObject для выполнения селектора в основном или дочернем потоке.
Если у вас есть время, выможно прочитать Руководство по программированию потоков .
Обычно у вас есть другой поток, который запускает селектор в главном потоке и делится информацией через ivar.
-(void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
У вас может быть поток, публикующий NSNotification, который основной поток ожидает (наблюдает), и передает информацию в объект NSNotification.