3

NSURLRequest、NSURLConnection、および NSURLRequestReturnCacheDataElseLoad ポリシーを使用して画像キャッシュを実装するためのサンプル コードはありますか?

次のコードを使用していますが、キャッシュが発生していないようです。いつもURLから画像を取得しています。ここで何が問題なのか教えてください:

NSMutableURLRequest *req=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://i54.tinypic.com/10pd2jk.png"]];
    NSData *data=[NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
    NSLog(@"Received %d bytes", [data length]);
    [req setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
    data=[NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
    NSLog(@"Received %d bytes", [data length]);
    [[NSURLCache sharedURLCache] setMemoryCapacity:1024*1024*10];


    UIImage *myImage = [UIImage imageWithData:data];
    UIImageView *sd = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 50, 50)];
    sd.image = myImage;
    [self.view addSubview:sd];
4

2 に答える 2

5

SDURLCache の使用を検討することをお勧めします: https://github.com/rs/SDURLCache

SDURLCache は実際にキャッシュをディスクに保存しますが、NSURLCache は保存しません。NSURLCache はメモリにのみキャッシュするため、アプリ セッション内でキャッシュされます。詳細については、リンク先の ReadMe を参照してください。

更新: iOS 5.x 以降、NSURLCache はディスクにキャッシュするようです: http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/

于 2011-01-22T04:03:20.510 に答える
0

またはhttps://github.com/rs/SDWebImageを試してください

于 2012-01-12T10:33:55.070 に答える