24章基本的なネットワーク機能

ネットワーク処理は扱いにくく厄介なものですが、それは主として、根本的には自分の制御下にないためです。ネットワークに対する筆者の考え方は、「コップを口へもっていくまでの短いあいだにもいくらでも失敗はある(いたるところ罠あり、油断すべからず)」です。ネットワーク越しにリソースを要求することはできますが、その時点で何が起こるかわかりません——そのリソースが見つからない(たとえば、サーバーがダウンしている)、リソースが届くのに時間がかかる、まったく届かない、一部分が届いた時点でネットワーク自体が消失してしまう……などです。とはいえ、iOSは、少なくとも基本的なネットワーク処理を行うことを非常に簡単にしてくれます。この章ではそれを扱います。

このまでの章の多くで、自動的にネットワークの処理をしてくれるユーザーインタフェースやフレームワークを取り扱ってきました。ユーザーインタフェースにUIWebView(11章)を配置すれば、ほら、もうネットワークにつながっています。UIWebViewが面倒な作業を全部こなして、それもおそらく自分で最初から組むよりもずっとうまくやってくれるのです。同じことが、MPMovieViewController(15章)にも、MFMailComposeViewController(20章)にも、MKMapView(24章)にも言えます。

24.1 HTTPリクエスト

単純なHTTPリクエストは、NSURLConnectionオブジェクトを介して実行します。このオブジェクトに、行いたいことを記述したNSURLRequestオブジェクトを渡して、ダウンロードを開始します。実際のネットワーク処理は非同期的に行われます(特に同期的に実行するように指示しない限り、ですがそのようにすることはありません)。つまり、NSURLConnectionオブジェクトはすべての処理をバックグラウンドで実行するのです。リクエストに応答してネットワークから送られてくるデータが到着すると、NSDataオブジェクトになります。 ...

Get 詳解 iOS SDK 第4版 ―ワンランク上のiPhone/iPadプログラミング now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.