基本的にAPIから情報を取得するiPhoneアプリケーションがあります(XMLで、最終的にはJSONである可能性があります)。結果オブジェクトは通常、View Controller (主にテーブル) に表示されます。
これが現在のアーキテクチャです。
リモートサーバーからさまざまなオブジェクトを取得する NSOperation クラスがあります。これらの NSOperation クラスのそれぞれは、解析された結果のオブジェクトを起動するカスタム デリゲート メソッドを受け取り、最後に結果が得られなくなったときにメソッドを受け取ります。したがって、デリゲートのプロトコルは次のようになります。
(void) ObjectTypeResult:(ObjectType *)result;
(void) ObjectTypeNoMoreResults;
解決策はうまくいくと思いますが、デリゲート プロトコルがたくさんあることになり、ビュー コントローラーはこれらすべてのデリゲート メソッドを実装する必要があります。悪くはないと思いますが、より良いデザインを常に探しています。
そこで、デリゲートの使用を削除するために NSNotifications を使用することを考えています。通知の userInfo 部分にオブジェクトを含めて、オブジェクトを受信したとおりに投稿し、それ以上利用できない場合は最終イベントを投稿することができます。そうすれば、1 つのコントローラーで複数のオブジェクトを使用する場合でも、各ビュー コントローラーに 1 つのメソッドを配置するだけで、すべてのデータを受け取ることができます。†</p>
それで、誰かが各アプローチの長所/短所を私と共有できますか. デリゲートではなくイベントを使用するようにコードをリファクタリングすることを検討する必要がありますか? 特定の状況では、一方が他方よりも優れていますか? 私のシナリオでは、複数の場所で通知を受け取るつもりはないので、プロトコルベースのデリゲートが適しているかもしれません。
ありがとう!