在加载包含图像的文档(例如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];
这种情况下,如果出现内存警告,会在app的tmp目录下新建一个文件夹,通常命名为DiskImageCache-random_suffix,打开的文档中的所有图片都保存在这里。
UIWebView加载新请求后,如果我调用
[sharedCache removeAllCachedResponses];
这些临时图像被删除。
防止缓存图像的唯一方法是调用
[NSClassFromString(@"WebCache") performSelector:@selector(setDisabled:) withObject:[NSNumber numberWithBool:YES]];
但这意味着使用私有 API。
有没有“苹果友好”的方式来实现这一目标?