0

私の仕事は、コンテンツをダウンロードして解析し、データベースに保存して、完了後にUIを更新することです(またはエラーについてユーザーに通知します)。これはアプリケーションのさまざまな部分で使用されるため、このコードを抽出してクラスを分離し、非同期ファサードとして使用したいと思います。NSURLConnectionを使用してネットワークタスクを処理します。NSURLConnectionは、別のスレッドでコールバックを呼び出します。しかし、私のUIコードはメインスレッドで実行する必要があります。一連のブロックを保存して、dispatch_asyncを使用してメインスレッドから呼び出したり呼び出したりすることもできますが、これは、このメインスレッドがハードコーディングされることを意味します。車輪の再発明をしたいと思っているので、Objective Cでスレッド間で通信するためのメカニズムが必要ですが、見つかりません。基本的に私が欲しい:

受信者は、指定された識別子と通知をディスパッチするスレッドを指定してメッセージを受信するようにサブスクライブします。

送信者は、メッセージ識別子といくつかの添付データを送信します。

サブスクライブされたすべての受信者は、指定されたスレッドでこのメッセージを受け取ります。

または、私のタスクに適した別のパターンがありますか?

4

1 に答える 1

0

異なるスレッドで実行されているオブジェクト間の通信に使用できNSNotificationCenter、異なるスレッドからの通知を投稿できます。

AppleNSNotificationCenterのドキュメントを参照してください

メインスレッドでUI要素を更新するには、 [self performSelectorOnMainThread:@selector(somefunction) withObject:nil waitUntilDone:NO];

于 2013-03-24T14:15:04.723 に答える