我使用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)上运行?

最佳答案

您在其中发布通知的线程。


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


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

关于objective-c - NSNotification和NSThread,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8263576/

10-09 15:35