0

ネットからさまざまな画像を取得し、それらをオフラインで使用するために iPhone にキャッシュするアプリケーションを作成しようとしています。私が現在取り組んでいるコードは次のとおりです。

NSMutableDictionary *Cache;
- (UIImage *)CachedImage: (NSString*)url {
    UIImage *image = [Cache objectForKey:url];
if (image == nil) {
    image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];
    [Cache setObject:image forKey:url];
    //NSLog (@"Stored");
    return image;
} else {
    //NSLog (@"Taken");
    return image;
} }

関数を呼び出し、以下のコード ストリップを使用してイメージを ImageView に配置します。

    [self.imageView setImage:[self CachedImage:url]]; // Change url to desired URL.

NSLog を使用して見つけた問題は、値が常に nil を読み取っているため、コードが実際に値を格納していないことです。その理由と、オフラインで使用するために画像を保存する他の方法はありますか? 前もって感謝します。

-ごん

4

2 に答える 2

0

あなたは探している

NSキャッシュ

ここでチェックしてください:http: //nshipster.com/nscache/

最も不適切な状況では、常に NSMutableDictionary の影に隠れてしまう貧弱な NSCache です。開発者が再実装するために多大な労力を費やしているガベージ コレクション動作のすべてを提供する準備ができており、そこにあることを誰も知らないようです。

于 2012-08-20T20:52:38.623 に答える
0

NSCache を使用して UIImage をキャッシュします。また、イメージをローカルに保存することもできます (これらのイメージを頻繁に再利用し、複数回起動する場合)。これにより、アプリを閉じたり、キャッシュをフラッシュしたりするたびに、ローカル ディレクトリからすぐにイメージを取得できます。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSCache_Class/Reference/Reference.html

于 2012-08-20T20:53:23.997 に答える