2

次のような通知を実行することは可能ですか

-(void) testMethod
{
   [[NSNotificationQueue defaultQueue] enqueueNotification:[NSNotification    notificationWithName:@"TEST123" object:self userInfo:parms]postingStyle:NSPostNow  coalesceMask:NSNotificationNoCoalescing forModes:nil];

NSLog(@"test123");
//.....

「-(void)testMethod」が NSLog の実行に進むように...、通知によって呼び出されたメソッドが終了しませんでした。スレッドなしで解決する方法はありますか?

4

2 に答える 2

0

メソッドを非同期で呼び出したいと思います。答えは NO です。同じスレッドでメソッドを非同期的に呼び出すことはできません。ドキュメントを確認してください:

通知センターは、オブザーバーに同期的に通知を配信します。つまり、postNotification: メソッドは、すべてのオブザーバーが通知を受信して​​処理するまで戻りません。通知を非同期に送信するには、NSNotificationQueue を使用します。

于 2011-06-12T00:07:35.770 に答える
0

NSNotificationQueue は非同期目的には使用されません。参照: NSNotificationQueue オブジェクト (または単に通知キュー) は、通知センター (NSNotificationCenter のインスタンス) のバッファーとして機能します。通知センターは投稿時に通知を配布しますが、キューに配置された通知は、実行ループを介した現在のパスが終了するまで、または実行ループがアイドル状態になるまで遅延できます。複数の通知が投稿されても、通知が 1 つだけ送信されるように、重複した通知を結合することもできます。

于 2012-09-22T15:27:02.270 に答える