尝试通过 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];
加载此类文件会导致内存增长,直到应用程序崩溃。根据 Instruments 的说法,即使在完全释放包含 Controller 和 webView 本身的 webView 之后,内存也会继续增长。在应用程序的其他位置,使用其他应用程序功能,内存会增长,就好像我仍在继续浏览该 .RTF 文件一样。
当关闭/解除 Controller 时,我也会执行所有操作来释放 WebView。 即:mainWebview.delegate = nil; [mainWebview停止加载]; , [mainWebview removeFromSuperview]; , [mainWebview 发布]; 。 (甚至尝试执行以下操作:[mainWebview loadHTMLString:@""baseURL:nil];)
我在仪器中看到的:
有人有什么想法吗? 谢谢。
编辑:我在 Safari、Chrome、Mercury 浏览器上测试了一些大型 .RTF 文件 (700 Kb - 2.4 Mb)。同样的事情到处都会发生,无论是模拟器还是设备。我猜这是 WebKit 中的一些错误。
一般情况:浏览器使用过多的内存来处理此类文件。 90% 的情况只是异常退出并出现“崩溃”或“内存不足”信号。如果设备在加载文件时处理峰值内存使用情况,那么内存会恢复正常,如果没有,则会崩溃。
最佳答案
在使用 UIWebView
时,我还遇到了一些与内存管理相关的问题。 In my case ,我发现行为发生了很大变化,具体取决于我将数据加载到 Web View 中的方式。对于你的情况,我没有解决方案,但根据我的经验,也许使用:
NSURLRequest *req = [NSURLRequest requestWithURL:urlToYourRTFFile];
[webView loadRequest:req];
可能会有所作为
关于iphone - UIWebView 加载 .RTF 文件时泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494144/