HJCache:iPhone cache library for asynchronous image loading and caching(上)


原文:http://www.markj.net/hjcache-iphone-image-cache/
HjCacheはiOS上のオープンソースのライブラリで、ネットワークピクチャを非同期でロードし、スクロール中のtablesに表示するとともに、ピクチャをローカルにキャッシュすることもサポートされています.
HjCacheには次のような特性があります.
1、ローカルキャッシュは、プログラムが次回使用されるときに、すばやく表示できるようにする.
2、キャッシュのサイズをカスタマイズできます.
3、キャッシュ中の画像はappのどこでも使用できます.
4、ダウンロードが中断された場合、未完成の画像のキャッシュは乱されません.
5、インタフェースがジャンプしているとき、ダウンロードが完了していない画像のダウンロードを継続し、キャッシュを完了することを許可する.
6、必要に応じて、使用するピクチャをプリロードすることができる.
上はHJCacheのすべての特性の中の以下の部分だけで、HJCacheができることはまだたくさんあります.
HJCacheが設計時に達成したい目的は:
1、非同期ロードを容易にする.
2、ローカルキャッシュを簡単に使用できる.
3、Cocoaシステムにおいて、メモリ管理を容易にする.
4、典型的な画像閲覧方式をサポートする.
5、libraryがより多くのデータ型に対応できるようにする.
HJCacheの使用方法:
まず、プログラムの初期化時にHJObjManagerクラスのインスタンスを作成し、ローカルキャッシュを使用する必要がある場合は、HJMOFileCacheクラスのインスタンスも必要です.
objMan = [[HJObjManager alloc] init];

//if you are using for full screen images, you'll need a smaller memory cache:

//objMan = [[HJObjManager alloc] initWithLoadingBufferSize:2 memCacheSize:2]];

NSString* cacheDirectory = [NSHomeDirectory() stringByAppendingString:@"/Library/Caches/imgcache/flickr/"] ;

HJMOFileCache* fileCache = [[[HJMOFileCache alloc] initWithRootPath:cacheDirectory] autorelease];

objMan.fileCache = fileCache;

HJManagedImageVは、UIViewのサブクラスであり、Managedに管理されているImages(URL非同期ロード、ローカルキャッシュ、または他の場所からのimage)を表示するために使用されます.私たちはどこでもUIImageVIewのようにHJManagedImageVを使用することができます.IBでもそうです.
次の例では、管理されているimagesを表示する方法を示します.URlを設定し、Managerに管理します.
managedImage.url = imageUrlForCurrentRow;

[self.objectManager manage:managedImage];

//NB, the library wants to be used from the main thread, so if you're not in the main thread, use:

//[self.objectManager performSelectorOnMainThread:@selector(manage:) withObject:managedImage waitUntilDone:YES];

これがすべてです.Managerは管理されているUImagesを使用したviewsをtrackします.通常のUIVIewのように管理されているimagesをメモリ管理することができます.imagesが画面に表示されなくなった場合、managerは自動的に処理したり、メモリに指定された数のimagesをキャッシュしたり、ローカルキャッシュを行ったりすることができます.
次の点に注意してください.
HJCacheの本当の利用者はHJManagedImageVであり、HJimagedImageVはimagesとキャッシュのインタラクションを表示する際にあまり多くのことをしていないので、HJObjManagerクラスがすべての煩雑で単調な仕事を引き継いだと思っています.HJManagedImageVの表現があなたの要求に合わない場合は、手足を放して継承し、修正し、HJCacheがimageだけをサポートしていないことを知っておく必要があります.
HJCacheの取得:
HJCache is up on github here: https://github.com/markofjohnson/HJCache.
中のDemoはただの简単なモデルで、HJChaheはもっときらびやかなUIの中で、もっと强力な机能を提供することができます!!