NSNotification和NSThread

时间:2011-11-24 23:51:41

标签: objective-c cocoa delegates nsthread nsnotification

我使用NSThread在单独的线程上创建一个对象。

NSThread* myThread = [[[NSThread alloc] initWithTarget:self selector:@selector(createNewObject:) object:elements] autorelease];
[myThread start];  // Actually start the thread

该对象等待事件。发生该事件时,会在默认通知中心发布通知。

我的AppController会观察该通知并运行一个选择器。

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
        [nc addObserver:self selector:@selector(myMethod:) name:MyNotification object:nil];

问题:选择器中的方法( myMethod:)是在主线程上还是在上面的线程上运行( myThread ) ?

1 个答案:

答案 0 :(得分:2)

发布通知的相同主题。

  

在多线程应用程序中,通知始终在发布通知的线程中传递,这可能与观察者注册自己的线程不同。 (Source

脚注:对象无法等待事件。对象只是存在。方法可以等待事件。