これはデザインパターンの質問です。
サーバーと非同期に(ストリームを介して)対話するクライアントを開発しているプログラミングタスクを想像してみてください。課題が不確定な数のタスクを実行することであるとしましょう。各タスクは不確定な数の子タスクを生成する可能性があります(つまり、ツリーをクロールします)。各タスクはサーバーに対して非同期要求を行い、応答処理を処理するために2つのブロック(1つは期待される戻り条件を処理するため、もう1つはエラー条件を処理するため)を提供します。
このようなシナリオでは、アウトバウンドリクエストをキューに入れる方法を簡単に確認できますが、そのキューを空にしても、後続の応答処理でさらに多くのアウトバウンドリクエストがキューに入れられる可能性があるため、全体的なタスクが完了したことを意味しません。アウトバウンド要求キューは、全体的なタスクを完了する過程で複数回ゼロに達する可能性があります。
iOSでは、全体的なタスクが本当に完了した時期を判断するために、どのようなオプション(デザインパターンと便利なクラス)を提案できますか?
これのもう1つの問題は、エラーシナリオ(任意の子タスク)で、全体的なタスク(およびすべての子タスク)をキャンセルしたいということです。
前もって感謝します!