我想知道子线程如何与Objective C中的父线程进行通信。我正在从我的主线程中生成一个线程,并希望亲密关于某个动作的主线程并继续。怎么做到这一点?
答案 0 :(得分:2)
通常你有另一个线程在主线程上运行一个选择器并通过ivar共享信息。
-(void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
答案 1 :(得分:2)
the same thread
下作为发件人执行。苹果文件说,并标记为注释。线程之间的信息可以通过NSThread的threadDictionary属性进行传输。我更喜欢使用它来注册一些状态变量。例如,滚动时,我会设置以下内容。
NSMutableDictionary *dictInfo = [NSThread mainThread].threadDictionary;
[dictInfo setObject:[NSNumber numberWithbool:YES] forKey:_kThreadPause];
当工作线程看到_kThreadPause设置为YES时,它将进入休眠状态。
BOOL bPause = [[[NSThread mainThread].threadDictionary objectForKey:_kThreadPause] boolValue];
if (bPause) [NSThread sleepForTimeInterval:0.1];
正如DavidNeiss所说,你可以使用NSObject的方法在主线程或子线程上执行选择。
如果您有时间,可以阅读threading programming guide。
答案 2 :(得分:1)
您可以让线程发布主线程正在侦听(观察)的NSNotification,并在NSNotification的对象中传递信息。