在iOS 7中,我能够将共享URL缓存设置为NSURLCache
的子类,我创建的任何UIWebView
都会自动为每个请求使用该共享缓存。
// Set the URL cache and leave it set permanently
ExampleURLCache *cache = [[ExampleURLCache alloc] init];
[NSURLCache setSharedURLCache:cache];
然而,现在在iOS 8中,似乎UIWebView从共享缓存中拉出来,cachedResponseForRequest
永远不会被调用。
是否有人找到此更改的文档或解决方法?
答案 0 :(得分:10)
我今天遇到了同样的问题。在ios7上没问题,在ios8上坏了。
诀窍是在didFinishLaunchingWithOptions中首先创建自己的缓存。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// IMPORTANT: call this line before anything else. Do not call [NSURLCache sharedCache] before this because that
// creates a reference and then we can't create the new cache.
NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024 diskCapacity:20 * 1024 * 1024 diskPath:nil];
[NSURLCache setSharedURLCache:URLCache];
...
您可以在其他应用中看到这一点:
https://github.com/AFNetworking/AFNetworking/blob/master/Example/AppDelegate.m
这个网站虽然陈旧,却有更多信息说明为什么你甚至不应该在上面的代码之前调用[NSURLCache sharedInstance]: http://inessential.com/2007/02/28/figured_it_the_heck_out