私は非常に非同期設計のiOSアプリケーションを開発中です。単一の概念的な「操作」が非同期的に実行され、応答(リモートサーバーへの呼び出し)を非同期的に受け取る多くの子ブロックをキューに入れる場合があります。これらの子ブロックのいずれかがエラー状態で実行を終了する可能性があります。子ブロックでエラーが発生した場合は、他の子ブロックを取り消す必要があります。エラー状態を親に渡し、親のエラー処理ブロックを実行する必要があります。非同期ブロックの推奨デザインパターン?
このような環境での作業に推奨されるデザインパターンやヒントは何ですか?
私はGCDのdispatch_group_asyncとdispatch_group_waitの機能について知っています。このアプリのデザインには欠陥があるかもしれませんが、ディスパッチ_グループ_アシンクで幸運を祈ることはできません。なぜなら、そのグループは子ブロックに「粘着性」ではないように見えるからです。
ありがとうございます!
ありがとう、私はビデオを見ました。私が抱えているのは、非同期応答を待っている間に操作が本質的に待ち行列に保持される方法です。 NSOperationQueueを活用することができれば便利です。私は他のアプリでこのクラスを使用していましたが、以前は、レスポンス処理ではなく、アウトバウンドリクエストをキューで処理していました。このアプリケーションでは、応答が処理され、関連する子要求も完了するまで、操作は実行されません。 – xyzzycoder
組み込みブロックに応答処理コードを入れることができますか?私の答えを更新します –
あなたが 'dispatch_async(dispatch_get_main_queue()、^ {});ではなく' NSOperation'の世界にいるなら、なぜ[[NSOperationQueue mainQueue] addOperationWithBlock:^ {}]; ' ?あなたが持っているものは問題ありませんが、GCDコールとNSOperationQueueコールを混在させるのは奇妙です。 – Rob