0

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)で実行されますか?

4

1 に答える 1

2

通知を投稿するのと同じスレッド。

マルチスレッドアプリケーションでは、通知は常に通知が投稿されたスレッドで配信されます。これは、オブザーバーが自分自身を登録したスレッドとは異なる場合があります。(出典

脚注:オブジェクトはイベントを待つことができません。オブジェクトはただ存在します。メソッドはイベントを待つことができます。

于 2011-11-24T23:57:38.223 に答える