2

マルチスレッド アプリで通知を受け取ろうとしてNSTaskDidTerminateNotificationいますが、うまくいきません。シングルスレッドアプリでテストしたところ、うまくいくようです。他のオブジェクト( myTaskなど)がそこで開始されinit[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(taskDidEnd:) name: NSTaskDidTerminateNotification object: myTask];いるため、呼び出されると確信しています。メソッドは次のtaskDidEnd:ように定義されます。

- (void)taskDidEnd: (NSNotification *)aNotification
{
     NSLog(@"Task succeeded.");
}

そして、dealloc では、オブザーバーが削除されます。

これはすべて、別のスレッド内で開始されるオブジェクトで発生し、同じオブジェクト内でその通知を受け取りたいです。

4

1 に答える 1

1

そのスレッドで実行ループを実行しましたか? そうでない場合、NSTask はタスクが終了したこと (またはタスクがまだ終了していないこと) に気付かず、通知を投稿しません。

于 2010-04-05T14:55:52.050 に答える