有没有人有使用 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];

最佳答案

你可能想看看使用 SDURLCache:https://github.com/rs/SDURLCache

SDURLCache 实际上将缓存保存到磁盘,而 NSURLCache 不会。 NSURLCache 只缓存在内存中,所以在你的应用程序 session 中。请参阅链接中的自述文件,其中更详细地解释了它。

更新: 看起来 NSURLCache 从 iOS 5.x 开始缓存到磁盘:http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/

关于iphone - 实现 NSURLRequest、NSURLConnection 和 NSURLRequestReturnCacheDataElseLoad 策略,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4764112/

10-12 04:29