Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 实现NSURLRequest、NSURLConnection和NSURLRequestReturnCacheDataElseLoad策略_Iphone_Cocoa_Nsurlconnection_Nsurlrequest - Fatal编程技术网

Iphone 实现NSURLRequest、NSURLConnection和NSURLRequestReturnCacheDataElseLoad策略

Iphone 实现NSURLRequest、NSURLConnection和NSURLRequestReturnCacheDataElseLoad策略,iphone,cocoa,nsurlconnection,nsurlrequest,Iphone,Cocoa,Nsurlconnection,Nsurlrequest,是否有人有使用NSURLRequest、NSURLConnection和NSURLRequestReturnCacheDataElseLoad策略实现图像缓存的示例代码 我正在使用以下代码,但似乎没有缓存发生。我一直在从URL获取图像。请告诉我这里出了什么问题: NSMutableURLRequest *req=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://i54.tinypic.com/10pd2jk.png

是否有人有使用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:

SDURLCache实际上会将缓存保存到磁盘,而NSURLCache则不会。NSURLCache只缓存在内存中,因此在应用程序会话中。请参阅链接上的自述,其中对其进行了更详细的解释


更新:看起来NSURLCache自iOS 5.x以来一直缓存到磁盘:

或者试试看

不确定我为什么会被否决。SDURLCache实际上会将缓存保存到磁盘,而NSURLCache则不会。NSURLCache只缓存在内存中,因此在应用程序会话中。(我最近没有证实这一点,但我很确定情况仍然如此。)否决票是我的。我正在寻找使用NSURLCache的示例代码,就像问题状态一样。SDURLCache对我没有任何用处,因为我使用的是Mono。但是你的评论很好地解释了为什么NSURLCache对任何一种方式都没有帮助,所以如果你能在回答中包含这一点,我很乐意取消否决票。对不起,我之前没有发表评论,我当时有点匆忙:)我也有同样的问题。SDURLCache似乎是一个不错的选择,但文档中提供的示例代码片段在理想情况下会更完整。我也没有观察到任何缓存。当我加载视图时,我说的是[self-getImage];我假设通过使用SDURLCache,我不必做任何其他事情。或者我需要手动保留“上次修改”的时间,然后从sharedcache读取数据吗?如果是这样的话,这就不会为我节省时间,因为我最终会以手动方式实现缓存。