Реализация политики NSURLRequest, NSURLConnection и NSURLRequestReturnCacheDataElseLoad - PullRequest
3 голосов
/ 22 января 2011

У кого-нибудь есть пример кода для реализации кэширования изображений с использованием политики 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];

Ответы [ 2 ]

5 голосов
/ 22 января 2011

Возможно, вы захотите взглянуть на использование SDURLCache: https://github.com/rs/SDURLCache

SDURLCache фактически сохраняет кэш на диск, а NSURLCache - нет. NSURLCache кэширует только в памяти, так что в рамках вашего приложения. См. ReadMe по ссылке, которая объясняет это более подробно.

Обновление: Похоже, NSURLCache выполняет кеширование на диск с iOS 5.x: http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/

0 голосов
/ 12 января 2012

Или попробуйте https://github.com/rs/SDWebImage

...