NSURLCache - 它是否适用于具有磁盘缓存的OSX?

时间:2012-06-28 18:01:26

标签: objective-c macos cocoa nsurlconnection nsurlcache

我无法在OSX上使用NSURLCache取得成功(10.7):

NSURLCache *cache = [[NSURLCache alloc] initWithMemoryCapacity:1024*1024*20
                                                  diskCapacity:1024*1024*5
                                                      diskPath:NSHomeDirectory()];

[NSURLCache setSharedURLCache:cache];

NSMutableURLRequest *req=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://wikipedia.org/"]
                                                 cachePolicy:NSURLRequestReturnCacheDataElseLoad 
                                             timeoutInterval:60];

NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
NSLog(@"Received %lu bytes", [data length]);

sleep(10);

[req setCachePolicy:NSURLRequestReturnCacheDataDontLoad];
data = [NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
NSLog(@"Received %lu bytes", [data length]);
  1. 第一个问题是如果我用SDK10.6构建它,第二个请求收到0个字节..
  2. 如果我使用SDK10.7构建它似乎有效,但我无法使用缓存进行持久存储 - 在重新启动程序后,第一个响应未从缓存加载,而是从服务器加载。如果我使用NSURLRequestReturnCacheDataDontLoad缓存策略初始化请求,我将获得0字节的响应。
  3. 如果我将内存限制设置为例如5个字节,则第二个请求接收0个字节。
  4. 在两种情况下都会创建文件Cache.db,似乎有一个有效数据,但磁盘缓存不起作用。

    NSURLCache怎么了?或者我做错了什么?

0 个答案:

没有答案