我使用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/