我想知道子线程如何与 objective-c 中的父线程进行通信。我从主线程中生成了一个线程,并想就某个操作与主线程保持亲密关系,并继续进行下去。如何实现呢?

最佳答案

  • 如果您在子线程中发布NSNotification,则接收方将收到通知,并以the same thread作为发送方执行。苹果文件说了这一点,并标记为便条。
  • 线程之间的信息可以通过共享内存传输,例如:结构,基本类型(int,CGFloat等)。
  • 线程之间的信息可以通过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
  • 10-07 19:55
    查看更多