5

下面给出的代码适用于 iOS 6,但不适用于 iOS 7。

NSCachedURLResponse cachedURLResponse = [[NSCachedURLResponse alloc] initWithResponse:response data:data userInfo:nil storagePolicy:NSURLCacheStorageAllowed];
[[NSURLCache sharedURLCache] storeCachedResponse:cachedURLResponse forRequest:request];
NSLog(@"Cached response is %@", [[NSURLCache sharedURLCache] cachedResponseForRequest:request]);

在 iOS 6 中,我正在获取缓存的响应数据,但在 iOS 7 中,它返回 null。我使用以下方法在 App 委托中设置了 NSURLCache 对象:

NSURLCache *urlCache = [[NSURLCache alloc] initWithMemoryCapacity:2 * 1024 * 1024
                                                     diskCapacity:2 * 1024 * 1024
                                                         diskPath:nil];
[NSURLCache setSharedURLCache:urlCache];

缓存在 iOS 7 中不起作用的原因是什么?

4

2 回答 2

1

缓存机制依赖于 HTTP 标头。如果首先允许缓存,请检查返回的 HTTP 标头。您可以使用像“Charles”这样的网络代理来做到这一点。

于 2014-02-25T08:51:22.610 回答
0

我正在做一个 POST 方法并使用所需的 NSData 设置 http_body。在 iOS 6 中,响应被缓存,但这在 iOS 7 中不起作用。

因此,现在我们不是设置 http_body,而是在 url 中附加参数并发出请求,并且缓存现在正在工作。

于 2014-03-05T06:44:58.553 回答