iPhone 用の画像ダウンロードライブラリ ImageStore を公開
iPhone 用の画像ダウンロードライブラリ、ImageStore のソースコードを公開します。
http://github.com/psychs/imagestore/tree/master
ライセンスは、New BSD ライセンスです。
使い方
まず、ImageStore を初期化して、インスタンス変数に保持しておきます。
imageStore = [[ImageStore alloc] initWithDelegate:self];
そして、画像をダウンロードしたくなったら、getImage を呼び、画像の URL を渡してやります。
[imageStore getImage:imageUrl];
getImage の呼び出しはすぐに戻り、ImageStore は裏で非同期に画像のダウンロードをはじめます。
ダウンロードが終わると、delegate の imageStoreDidGetNewImage:url: が呼ばれるので、そこで画像を使った処理をしてください。
- (void)imageStoreDidGetNewImage:(ImageStore*)sender url:(NSString*)url { UIImage* image = [sender getImage:url]; // 画像を使う処理 }
一度ダウンロードした画像は、ImageStore の内部にキャッシュしているので、次回からは getImage ですぐに画像を取得できます。(返値が nil のときは、まだ未取得なのでダウンロードを始めます)
UIImage* image = [imageStore getImage:imageUrl];
詳しい説明
内部的には NSURLConnection を使っているので、いくつもの画像を同時に並行してダウンロードすることができます。
サンプルプロジェクトとして、Twitter のパブリックタイムラインを表示するアプリを作りました。
スクロールしていくと、表示が必要になったら画像のダウンロードを始め、それが終わったら画像を表示する様子が確認できると思います。
その他、NSURLConnection を使いやすくラップした HttpClient、角丸画像の描画サンプル、UITableViewCell の高速な描画コードなども含んでいるので、ぜひ参考にしてみてください。