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 の高速な描画コードなども含んでいるので、ぜひ参考にしてみてください。