簡體   English   中英

加載.RTF文件時UIWebView泄漏內存?

[英]UIWebView leaking memory when loading .RTF files?

嘗試通過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,即使在完全釋放包含控制器的webView和本身的webView之后,內存的增長仍在繼續。 在應用程序的其他位置,使用其他應用程序功能,內存會增加,好像我仍在繼續瀏覽該.RTF文件一樣。

當關閉/關閉控制器時,我還要做所有事情來釋放WebView。 那就是:mainWebview.delegate = nil; [mainWebview stopLoading]; ,[mainWebview removeFromSuperview]; ,[mainWebview版本]; (甚至嘗試執行以下操作:[mainWebview loadHTMLString:@“” baseURL:nil];)

我在工具中看到的是: 在此處輸入圖片說明

有人有什么想法嗎? 謝謝。

編輯:我在Safari,Chrome,Mercury瀏覽器上測試了一些大型.RTF文件(700 Kb-2.4 Mb)。 模擬器和設備無處不在,發生同樣的事情。 我猜這是WebKit中的錯誤。

一般情況:瀏覽器使用太多內存來處理此類文件。 在90%的情況下,僅通過“崩潰”或“內存不足”信號異常退出。 如果設備在加載文件時處理峰值內存使用情況,則內存將恢復正常,如果不正常,則會崩潰。

使用UIWebView時,我還遇到了一些與內存管理有關的問題。 就我而言 ,我看到行為發生了很大變化,具體取決於將數據加載到Web視圖中的方式。 對於您而言,我沒有解決方案,但根據我的經驗,也許使用:

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

可以有所作為

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM