私のアプリで非常に小さなWebサービスを大量に使用していますが、拡張性や期待どおりに機能しないいくつかの道を進んできました。
考えている設計アプローチ:viewControllerのタスクは、一般的なwebServicesClassからデータのセットを要求することです。このタスクは、新しいNSThreadで開始されます->これにより、xmlを取得するだけのオブジェクトがインスタンス化され、 webServicesClass-> webServicesClassは、この特定のWebサービスからのXMLを解析できるオブジェクトをインスタンス化するようになりました。次に、パーサーは適切なEntityオブジェクトをwebServiceClassに返します。WebserviceClassは、このデータについてviewControllerに通知する必要があります。
viewControllerは、webServiceClassDelegateといくつかのデリゲートメソッドを実装して、Webサービスリクエストが計画どおりに行われたかどうかを確認します。例:-(void)aWebserviceFailedおよび-(void)aWebserviceSuccess。
0.5実行中のWebserviceClassは別のNSThreadであるため、親オブジェクトのメインNSThreadでデリゲートメソッドを呼び出すのに問題がありますか?
1.0この設計は、さまざまなクラスのエンティティの取得、解析、および戻りを完全にカプセル化していないため、適切だと思います。ただし、さまざまなWebサービスごとに、委任メソッドを作成し、途中の各ステップで委任プロトコルを実装する必要があります。つまり、下から始めて、WebserviceClassは、XMLを取得するオブジェクト(start、fail、success)の両方に対して委任メソッドを実装する必要があり、次にXMLを解析するオブジェクト(start、fail、success)とWebserviceClassが実行できる必要があります。これらの各応答をviewControllerに委任します。このビューコントローラーは、WebserviceClassからの委任メソッド(start、fail、success)を再度実装する必要があります。これを行うためのはるかに簡単な方法はありますか?
私はデザインパターンの経験がありますが、Objective Cほど一貫して委任を使用する言語からではありません。AS3またはJavaでは、オブジェクトを介してバブルし、変更について聞いている人に通知するイベントが発生します。私が読んだすべてのObjectiveサンプルコードでは、NSNotifications(AS3またはJavaの「イベント」に相当)が0.1%の頻度で使用されているのを見ただけです。
私が説明したデザインは、多くのWebサービスに完全に対応し、潜在的なエラー/例外が発生する場所を完全に制御できるものを提供しますが、この緩い結合を取得するには多くのコードがあるようです。
1.1または、委任アプローチを完全に受け入れて作業を開始する必要があります:)
ポインタやヘルプを提供していただきありがとうございます。ソースコードなどを求めているのではなく、「これは、今説明した日常の状況でのObjectiveCのベストプラクティスと見なされます」:)