UIWebView第一次分配

时间:2012-08-03 18:28:44

标签: ios memory-leaks uiwebview

我创建了一个小测试TabController应用来测试UIWebView的内存使用情况。点击每个标签会显示一个简单的视图控制器,它会在UIWebView的主视图中添加viewWillAppear。 Webview加载本地测试html文件,该文件显示1000个图像。

viewWillDisappear上,我通过从超级视图中删除它来取消分配WebView,因为我不想在内存中有多个实例。在我释放WebView之前,我还在HTML实现中调用一个方法来销毁浏览器窗口对象中包含的任何对象。

我注意到的是,当我第一次初始化UIWebView时,它会分配大约600KB的内存。当我通过切换标签取消分配WebView时,我没有得到那个记忆。

在切换选项卡后分配和初始化下一个WebView时,仅分配大约20 KB的内存。当我点击下一个标签时,当前的webview被取消分配,我得到了大部分的20KB。

只是操作系统在呈现UIWebView时需要依赖它所需的依赖库吗?

以下是我的viewWillAppear / viewWillDisappear方法:

- (void) viewWillAppear:(BOOL)animated{
     [super viewWillAppear:animated];
     webView = [[UIWebView alloc] initWithFrame:[self view].frame];
     webView.delegate = self;
     [[self view] addSubview:webView];

     NSString *fileStr = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"html" inDirectory:@""];
     NSMutableString* template = [NSMutableString stringWithContentsOfURL:[NSURL fileURLWithPath:fileStr] encoding:NSUTF8StringEncoding error:NULL];

     NSString *path = [[NSBundle mainBundle] bundlePath];
     NSURL *baseURL = [NSURL fileURLWithPath:path];

     NSData* d = [template dataUsingEncoding:NSUTF8StringEncoding];
     [webView loadData:d MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:baseURL];
     [webView release];
}

- (void) viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    webView.delegate = nil;
    [webView stopLoading];
    [webView stringByEvaluatingJavaScriptFromString:@"destroy();"];
    [webView removeFromSuperview];
}

0 个答案:

没有答案