2011-11-24 11 views
0

私は、NSThreadを使って別のスレッドにオブジェクトを作成します。NSNotificationと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)からスレッド上のセレクタランから?

答えて

2

通知を送信する同じスレッドです。

マルチスレッドアプリケーションでは、通知が通知されたスレッドで通知が常に配信されます。通知は、オブザーバが登録したスレッドと異なるスレッドである可能性があります。 (Source

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

+0

Thx !!! (「イベント待ち」と言うと、ユーザーのやりとりに反応することを意味していましたが、わかりません) – Daniel

+0

ところで:特定のメソッドを実行するスレッドの名前を調べる方法はありますか? – Daniel

+0

@Daniel:スレッドには名前がありません。メインスレッドを除いて、それはです。 –