0

タスクは次のとおりです: 1) トラック ID があります。サーバーにすべてのトラック データを要求する必要があります。サーバーにすべてのアルバム データを要求する 4) 応答を解析する (ここにアーティスト ID もある) 5) アーティスト ID を取得したので、サーバーにすべてのアーティスト データを要求する必要がある

gcdでこれを行う正しい方法は何だろうか。3 ディスパッチ_非同期内のディスパッチ_同期? これらすべてをバックグラウンドで実行する 1 つの操作にしたいので、最初は NSOperation について考えましたが、すべてのコールバック、解析、コア データへの保存はバックグラウンド スレッドで行う必要があるため、別の実行ループを作成する必要があります。コールバックが応答を受け取る前に強制終了されず、UI をブロックしないことを確認します。

問題は、ここで gcd をどのように使用すればよいか、または nsoperation とコールバック用の runloop スレッドを使用する方がよいかということです。ありがとう

4

1 に答える 1

1

メインスレッドで実行される NSOperation とコールバックを使用することをお勧めします。

考えてみると、ワークフローはかなりシーケンシャルです: 1 -> 3 -> 5; 解析ステップ (2 と 4) はおそらくそれほど高価ではないため、別のスレッドで実行したいと考えています (それらはまったく高価ではなく、ネットワーク通信の待機時間と比べて解析時間を無視できます)。

AFNetworkingさらに、 (またはNSURLConnection+ ブロックのような) 通信フレームワークを使用すると、ワークフローの実装が非常に簡単になります。

  1. トラックデータを取得する
  2. 「トラック データの取得」応答ハンドラで、アルバム ID を取得し、「アルバム データ」の新しい要求を送信します。
  3. 「アルバム データの取得」レスポンス ハンドラで、アーティスト ID を取得するなど...
于 2012-04-10T08:17:27.153 に答える