ネットワークの利用ということを考えれば、もっとも重要なのは「
ネットワーク通信」でしょう。これにはいくつかのクラスが必要となります。通信に使われるクラスを整理すると、以下のようになるでしょう。
NSURLまずは、URLを
NSURLとして用意する必要がありますね。これは既にわかるでしょう。
NSURLRequestこれは、
リクエストに関する操作や情報の管理を行うためのものです。リクエストというのは、こちらからホストへの要求のことです。
NSURLResponseこれは、サーバーからの
レスポンスを管理するためのものです。ネットワーク通信では、サーバーにリクエストを送信すると、今度はサーバーからレスポンスが返ってきます。
NSURLConnectionURLによるサーバーとの
接続を管理するものです。ここで
NSURLRequestと
NSURLResponseを使ってサーバーに接続を行います。
◯通信処理の流れ1.まず、
NSURLを使ってアクセス先のアドレスを用意します。
2.NSURLをもとに、
NSURLRequestインスタンスを作成します。
3.レスポンスを保管する
NSURLResponseの変数を用意します。
4.NSURLRequestと
NSURLResponseを使い、
NSURLConnectionインスタンスを作成し、通信を開始します。
5.サーバーから結果が返ってきたら、
NSURLResponseから必要な情報を取り出します。
ざっとこんな流れになります。プログラミング時に用意しなければならないのは、
NSURLの他には、
NSURLRequestと
NSURLConnectionのインスタンスです。NSURLResponseのインスタンスは作成しません。これは通信の結果、
NSURLConnectionによって作成され変数に設定されるため、自分でインスタンスを用意することはありません。では、
NSURLRequestと
NSURLConnectionのインスタンス作成を以下に整理しておきましょう。
◯NSURLRequestインスタンスNSURLRequest* 変数 = [NSURLRequest requestWithURL:《NSURL*》];
◯NSURLConnectionインスタンス(同期)SNData* 変数 = [NSURLConnection
sendSynchronousRequest:《NSURLRequest*》
returningResponse:《NSURLResponse**》 error:《NSError**》];
NSURLConnectionによる通信には、「
非同期」と「
同期」があります。
同期通信というのは、サーバーにリクエストを送り、サーバーからレスポンスが返ってきて、それをすべて受け取って完了したらおしまい、というように、全部を順番に1つ1つ実行していくものです。すべてが終わるまでプログラムの実行は停止され、通信が終わってから続きが実行されます。
非同期通信というのは、サーバーにリクエストを送ったら、それでおしまいです。後は自由時間、好きにしてよろしい! ……そして、サーバーからのレスポンスがすべて完了し「全部受け取った」となったら、あらかじめ指定してあった処理が呼び出される、という形です。つまり、通信中の待ち時間はなくなり、「終わったら呼んでね」という形で通信が行われます。
同期通信は、終わるまでずっと待つため、通信状態などによってはけっこうプログラムの実行が停止してしまいます。が、処理は単純で扱いやすいものです。
非同期通信は待ち時間がなく、非常に柔軟に対応できますが、別途レスポンス完了後の処理の呼び出しなどをあれこれ工夫しないといけないため、けっこうややこしくなります。