如果您的iPhone应用程序使用UIWebView,并加载包含大图像的许多页面,您可能会发现您正在泄漏内存.这可以解决吗?
我发现了一些类似的帖子,但它们似乎对我正在做的事情没有任何影响.我有一个UIWebView
我用来在我的包中显示本地内容的东西.具体来说,我正在显示一个docx文件.用户应该很少看到这个文档,我的应用程序内存紧张,所以我想做的是阻止UIWebView
缓存文档.另一个可行的选择是在用户离开视图时清除缓存.每次用户进入视图时,我都必须从头开始加载它.
我这样加载文档:
NSString * path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"Intro text"] ofType:@"docx"];
NSURL * url = [NSURL fileURLWithPath:path];
request = [NSURLRequest requestWithURL:url];
doc_view_rect = CGRectMake(5,105,self.view.frame.size.width,self.view.frame.size.height);
doc_viewer = [[UIWebView alloc] initWithFrame:doc_view_rect];
[doc_viewer loadRequest:request];
Run Code Online (Sandbox Code Playgroud)
在我尝试停止缓存时,我尝试过:
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
Run Code Online (Sandbox Code Playgroud)
和:
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
[sharedCache release];
sharedCache = nil;
Run Code Online (Sandbox Code Playgroud)
和:
if(request) {
[[NSURLCache sharedURLCache] removeCachedResponseForRequest:request];
}
[[NSURLCache sharedURLCache] removeAllCachedResponses];
Run Code Online (Sandbox Code Playgroud)
我也尝试设置网络视图缓存策略,但这似乎只是吃了内存,就像我发布webview时,仍然留下了内存.当我重新进入并重新分配时,它没有使用相同的内存.
我不认为这是正确的方向.这些都被标记为阻止网页缓存的方法,但它们似乎对本地文件没有影响.我真的不确定这个还有什么去的.如果有人知道如何强制缓存清除,或者首先阻止缓存,我会非常感谢一些帮助.