Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSNotification和NSThread_Objective C_Cocoa_Delegates_Nsthread_Nsnotification - Fatal编程技术网

Objective c NSNotification和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在单独的线程上创建一个对象

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
。您可以按照已经找到的方式命名线程,但您必须自己命名,方法是向线程对象发送消息以设置线程对象的名称。