加载.RTF文件时UIWebView泄漏内存?

时间:2012-09-19 11:51:57

标签: iphone memory memory-leaks uiwebview memory-management

尝试通过webView加载.rtf文件(2.4 MB),如下所示:

 NSURL *docURL = [NSURL fileURLWithPath:docPath];
NSData *data = [NSData dataWithContentsOfURL:docURL];
NSString *mimeType = //receiving proper mime type here
[webView loadData:data MIMEType:mimeType textEncodingName:@"utf-8" baseURL:docURL];

加载此类文件会导致内存增长,直到应用崩溃。根据仪器,即使在完全取消分配包含控制器和webView本身的webView之后,内存仍会继续增长。使用其他应用程序功能在应用程序的其他位置,内存增长,好像我仍在继续浏览.RTF文件。

关闭/解除控制器时,我也会做所有事情来解除分配WebView。 那就是:mainWebview.delegate = nil; [mainWebview stopLoading]; ,[mainWebview removeFromSuperview]; ,[mainWebview发布]; 。 (甚至尝试执行以下操作:[mainWebview loadHTMLString:@“”baseURL:nil];)

我在乐器中看到的内容: enter image description here

有人有什么想法吗? 感谢。

编辑:我在Safari,Chrome,Mercury浏览器上测试了一些大型.RTF文件(700 Kb - 2.4 Mb)。同样的事情到处发生,包括模拟器和设备。我想这是WebKit中的一些错误。

一般情况:浏览器使用太多内存来处理此类文件。在90%的情况下,只是异常退出“崩溃”或“低记忆”信号。如果设备在加载文件时处理峰值内存使用情况,那么内存会恢复正常,如果不是 - 它会崩溃。

1 个答案:

答案 0 :(得分:1)

使用UIWebView时,我还遇到了与内存管理相关的几个问题。 In my case,我看到这种行为发生了很大变化,具体取决于我将数据加载到Web视图中的方式。在你的情况下,我没有解决方案,但根据我的经验,可能使用:

NSURLRequest *req = [NSURLRequest requestWithURL:urlToYourRTFFile];
[webView loadRequest:req];

可能会有所作为