2011-01-26 26 views
2

私はObjective-CとiPhoneの開発にちょっと新しく、質問があります。 JSON-RPCを使用してインターネットからデータを取得するアプリケーションを作成しています。リクエストを実行し、デリゲートを使用して結果を渡すJSON-RPCクライアントを作成しました。iPhoneアプリケーション内でリソースを共有する最良の方法

しかし、私はアプリケーションでかなりの回数クライアントを使用する必要があるので、私は考えていました。クライアントリソースを共有する最良の方法は何ですか?私の理解から、(私は少なくともこれまで読んだから)私は次のオプションがあります。

  1. 、リモート・データへのアクセスを必要とする私のコントローラ
  2. のそれぞれに別々のクライアントが既にインスタンスクライアントを渡してインスタンス化ダウンそれぞれの新しいコントローラインスタンス上
  3. は、クライアントのシングルトンを作成しますAppDelegate
  4. にクライアントを追加し、使用することを
  5. 使用グローバル変数

1,2オプションはリソースの無駄であるようです。私は3,5が最善の方法ではないことを読んできました。それは私たちに4を残します。しかし、私はあなたが代理人とシングルトンを使うことはできないと思います。私はNSNotificationに切り替える必要がありますか?

他の方法はありますか?

+0

デリゲートで実際にシングルトンを使用できます – Felix

+0

シングルトンの代理人を3-4コントローラで使用する場合、シングルトンがデータを返すたびにすべてのコントローラにメッセージが届きませんか? – mobius

答えて

2

私が理解しているところでは、インターネット上のサーバーに複数回接続してデータをダウンロードするとしますか?そうなら、NSURLConnectionクラスを使用し、JSONデータをリクエストしてデリゲートメソッドを実装するたびにNSURLConnectionオブジェクトを作成する必要があります。詳細については、Apple DocumentationsのNSURLConnectionクラスを参照できます。

乾杯。

+0

あなたが理解しているかどうかはわかりません。クライアントクラスはNSURLConnectionを使用してリモートサーバーに実際に接続し、その代理人を実装します。それはさらに、応答を解析し、それを自身の代理人を介して返信します。私の質問は、どこでも同じクラスをインスタンス化する必要があるかどうか、または先に述べたメソッドのいくつかを使って渡すべきかどうかです。 – mobius

+0

もしあなたがそれを必要とするならば、あなたは同じ方法でデータを操作しています。そうすれば、同じ接続を扱うだけのクラスを作成する必要があります。接続は持続的でしょうか?電池の持続性は悪いです。完了するたびに接続を解除する必要があります。 – Seyther

関連する問題