アプリのネットワーク コードを一元化しようとしています。基本的に、サーバーからの情報が必要なさまざまな場所で、ServerRequest クラスのオブジェクト serverRequest を作成して情報を取得します。ServerRequest が完了すると、情報を呼び出し元のオブジェクトに送り返す必要があります。もちろん、非同期で動作する必要があります。待機中にアプリが停止することは望ましくありません。
この情報の戻りは、注意が必要な部分です。私のオプションは委任と通知のようです。私が知る限り、どちらにも問題があります。
委任: serverRequest オブジェクトへの委任として自分自身を渡します。問題は、リクエストが完了する前に割り当てが解除された場合、serverRequest が割り当て解除されたオブジェクトをメッセージで送信し、プログラムがクラッシュすることです。これを防ぐには、すべてのサーバー リクエスト (複数ある場合もあります) を追跡し、dealloc メソッドでそれらすべてを通知して、それ以上メッセージを受信しないようにする必要があります。これはすべて可能ですが、確かに面倒です。
通知: 情報を渡すのは大変な作業のようです。自分自身をオブザーバーとして通知センターに追加し、割り当てを解除するときに自分自身を削除する必要があります。さらに、完了時にどのような通知を投稿するかという情報を ServerRequest に渡す必要があります。そして、ServerRequest は受信したデータを NSDictionary に押し込む必要があり、それが渡された後にそれを元に戻します。
どちらのメソッドも機能するはずですが、ServerRequest を呼び出すコードを起動してオブジェクトを渡すだけでも、非常に手間がかかるように思えます。通知はもう少し柔軟で、痛みが少なく、クラッシュする可能性が少し低いと思いますが、どちらのアプローチにもあまり満足していません. フィードバックをいただければ幸いです。ありがとう。