小编Flo*_*Pop的帖子

禁用UIWebView DiskImageCache

当加载包含图像(如文档的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];
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果发生内存警告,则会在应用程序的tmp目录中创建一个新文件夹,通常名为DiskImageCache-random_suffix,打开文档中的所有图像都保存在此处.

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

[sharedCache removeAllCachedResponses];
Run Code Online (Sandbox Code Playgroud)

这些临时图像被删除.

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

[NSClassFromString(@"WebCache") performSelector:@selector(setDisabled:) withObject:[NSNumber numberWithBool:YES]];
Run Code Online (Sandbox Code Playgroud)

但这意味着使用私有API.

是否有"Apple友好"的方式来实现这一目标?

caching objective-c docx uiwebview ios

4
推荐指数
1
解决办法
3007
查看次数

标签 统计

caching ×1

docx ×1

ios ×1

objective-c ×1

uiwebview ×1