Ios 禁用UIWebView DiskImageCache

Ios 禁用UIWebView DiskImageCache,ios,objective-c,caching,uiwebview,docx,Ios,Objective C,Caching,Uiwebview,Docx,加载包含图像的文档(例如Microsoft Word docx文件)时,UIWebView在收到内存警告时始终会缓存图像,而不管缓存策略如何 下面是一个示例代码片段: NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:1024 * 1024 diskCapacity:0

加载包含图像的文档(例如Microsoft Word docx文件)时,UIWebView在收到内存警告时始终会缓存图像,而不管缓存策略如何

下面是一个示例代码片段:

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:1024 * 1024
                                              diskCapacity:0
                                              diskPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"URLCache"]];
[NSURLCache setSharedURLCache:sharedCache];

NSURLRequest* req = [NSURLRequest requestWithURL:
                    [NSURL URLWithString:@"http://www.its.swinburne.edu.au/about/projects/templates/TechnicalSpecificationTemplatev1.1-[ProjectName]-[ver]-[YYYYMMDD].docx"] 
                    cachePolicy:NSURLRequestReloadIgnoringCacheData 
                    timeoutInterval:10];
在这些情况下,如果出现内存警告,将在应用程序的tmp目录中创建一个新文件夹,通常命名为diskmagecache-random_suffix,打开的文档中的所有图像都保存在此处

UIWebView加载新请求后,如果我调用

[sharedCache removeAllCachedResponses];
这些临时图像将被删除

防止缓存图像的唯一方法是调用

[NSClassFromString(@"WebCache") performSelector:@selector(setDisabled:) withObject:[NSNumber numberWithBool:YES]];
但这意味着使用私有API


有没有一种“苹果友好”的方法来实现这一点?

我在查看WebKit的“未记录”首选项后找到了它。通过以下设置,可以在应用程序的整个生命周期内禁用DiskImageCache:

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitDiskImageCacheEnabled"];
[[NSUserDefaults standardUserDefaults] synchronize];

我刚刚用iOS 7.1.1测试了这个解决方案,并将示例代码上传到了。请注意,该设置将在下次启动应用程序时生效,此时UIWebView已初始化。@DrMickeyLauer,请尝试WebKitOfflineWebApplicationCacheEnabled