2016-05-31 12 views
0

AFHTTPRequestOperationManagerを使用してJSONデータを取得するAPIを呼び出しています。AFHTTPRequestOperationManagerの再利用の長所と短所は何ですか?

現在、リクエストごとに新しいAFHTTPRequestOperationManagerをインスタンス化しています。我々はただ一つのAFHTTPRequestOperationManagerをインスタンス化し、要求をまたがって再利用することを検討しています。

トレードオフは何ですか?

+1

私はシングルトンの実装に行きます。特に、すべてのリクエストが単一のWebドメインにある場合。 –

+0

@rokjarc特にシングルドメインへのリクエストのために、シングルトンの実装を行うのはなぜですか? –

+1

この場合のシングルトンは、コードをもう少しきれいに保つのに役立ちます。アプリ全体で多数の参照を保持する必要はありません(または 'AppDelegate'に1つ保持する必要はありません)。私は 'initWithBaseURL:'コンストラクタのために '単一ドメイン'について言及しました。プロパティ 'baseURL'は読み込み専用です。 3.x( 'AFHTTPSessionManager')に移行したいかもしれません。 –

答えて

2

ドメインごとAFHTTPRequestOperationManagerが便利なパターンであるいくつかの理由があります。

1)あなたは大きなメモリ圧力

2を作成することができ、要求ごとに新しいマネージャーを作成するリソースを節約するには)ただ1つを有しますマネージャを参照することで、アプリ内のすべてのネットワークリクエストを簡単に管理できます。たとえば、ユーザーがログアウトすると、すべての要求を取り消すことができます。マネージャーが1人のため、操作キューに簡単にアクセスして一度にキャンセルできます。

3)#2に関連して、1つのインスタンスを持つと、すべてのリクエストの設定を一度に管理できます。たとえば、承認ヘッダーを追加するか、カスタムパーサーを構成します。これらはもちろん、すべての要求の前に行うことができますが、それは不必要な複雑さを追加します。

+0

1と2が強い点です。理由3はそれほど強くはありません:以前は、新しいAFHTTPRequestOperationManagerを作成、設定、返すメソッドが1つしかなかったので、このロジックはすべて1か所にありました。あなたの(優秀な)答えに応じて、 'static 'キーワードと' if(!manager){/ * config * /}チェックを追加しました。 –

関連する問題