2011-01-19 7 views

答えて

0

最も単純な方法はおそらくNSNotificationCenterの-addObserverForName:object:queue:usingBlockです。助けのための

... 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(processNotificationInBackground:) name:TheNameOfTheNotification object:nil]; 
... 

- (void) processNotificationInBackground:(NSNotification *)not { 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     /* your background notification processing code goes here */ 
     /* note that you should transfer control back to the main queue if you need to update your UI */ 
    } 
} 
+0

感謝を:それはあなたのニーズを満たしていない場合ので、ここでの代替だ、私は最初のことをしようとするだろうが、私はそれにいくつかの問題があったと信じています。私はこれが正しい方向への一歩だと考えていますが、これらのメソッドを実装することでわかることから、通知を処理してバックグラウンドスレッドをディスパッチするためにメイン(または実装されているスレッド)をブロックする必要があります。私は通知の監視と常に実行中のバックグラウンドスレッドでの処理の両方を行うことをお勧めします。 – ambientdiscourse

+0

私はその点を知っていますか(あなたのメインスレッドはビーチボールを避けるためにブロック解除されてはいけませんか?)、バックグラウンドスレッドの通知センターに通知を投稿すると、スレッドをメインスレッドにシャットダウンするのではなく、あなたがする必要があるのは、あなたの通知*ポスター*をバックグラウンドスレッドで行うことです。これは簡単です。しかし、二重チェック。その動作が保証されているかどうかはわかりません。 –

+0

私のメインスレッドをブロックしているわけではありません。メインスレッドには、中断したくない本質的なことがあります。しかし、助けてくれてありがとう。私はあなたがバックグラウンドスレッドに投稿するのが正しいと思います。ありがとう! – ambientdiscourse

関連する問題