Objective c NSNotification和NSThread
我使用NSThread在单独的线程上创建一个对象Objective c NSNotification和NSThread,objective-c,cocoa,delegates,nsthread,nsnotification,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观
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)上运行?发布通知的同一线程 在多线程应用程序中,通知始终在发布通知的线程中传递,该线程可能与观察者注册自身的线程不同。()
脚注:对象不能等待事件。对象只是存在。方法可以等待事件。Thx!!!(我说的“等待事件”,意思是它会对用户交互做出反应。很抱歉不清楚。)顺便问一下:有没有办法找出运行某个方法的线程的名称?@Daniel:线程实际上没有名称。除了主线程,我指的是我自己创建的线程,或者主线程。例如,不应该是NSThread*myGreatThread的名称;是否为“myGreatThread”?@Daniel:在
NSThread*myGreatThread
中,线程未命名为myGreatThread
,可能包含指向线程指针的变量命名为myGreatThread
。您可以按照已经找到的方式命名线程,但您必须自己命名,方法是向线程对象发送消息以设置线程对象的名称。