UIWebView
が原因であるリークの数を修正しようとしていますが、その原因や回避策が見つかりません。私は私のHTMLを組み立てると、その場でそれをロードし、その後、ネットワーク要求を通じてウェブからいくつかのコンテンツを取得しているかどう:UIWebViewとJavascriptでメモリリークが発生する
NSString* body = <some HTML>;
NSString* html = [NSString stringWithFormat:kHTMLTemplate, [self scripts], [self styles], body];
[_webView loadHTMLString:html
baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
たびに利用可能な新しいコンテンツがあり、私は、Webビューをリフレッシュするために再びloadHTMLString
を実行します。同じWebビュー、同じコントローラ、すべて同じものを再利用します。
インスツルメンツすべてのリークしたオブジェクトは、様々なサイズおよびそれらのどれの一般的なブロックされた非常に奇妙なパターンがそれに接続されているすべての情報がある示していますたびloadHTMLString
ノー責任ライブラリ、ノー責任フレームなどが実行されます、新しいリークが追加されます。
S.Oにはいくつかのスレッドがあるようです。約UIWebView
メモリが漏れています。見つけたすべての提案を試してみました(例えば、NSURLCache
をゼロに設定する、またはリセットする、新しいデータなどがあるたびに新しいUIWebViewを割り当てようとしましたが)何も助けてくれませんでした。
これまでの調査では、1つの明確な結果が得られました。リークは、ビューにロードするHTMLにJavascriptが含まれている場合にのみ存在するようです。上記のhtml
文字列に気付くと、それはいくつかのコンポーネントで構成されています。私はこれを削除した場合
return @"<script type='text/javascript' src='jquery-1.4.4.min.js'></script>"
"<script type='text/javascript' src='jmy.js'></script>";
、漏れがない:一つは、単に返す関数である[self scripts]
です。しかし、私がHTMLに<script>
タグを追加するとすぐにリークが表示されます。
return @"<script type='text/javascript' src='jquery-1.4.4.min.js'></script>";
ので、質問:私は単に(としてこれに、または任意の他のjsファイル)jqueryのファイルを含める場合は彼らも表示されている誰もがここで何が起こっているかについての考え?私のHTMLに明らかにJavascriptファイルを含めると、UIWebView
のリークメモリが作成されます。
私は同じUIWebView
オブジェクトを再利用するか、私は新しいものをインスタンス化するとき、私は、コンテンツを持っているたびに、JavaScriptファイルがloadHTMLString
たリードによって処理される方法で何かがなければならないことを考えるように私をリードするとき漏れが両方表示されているという事実漏れに
これはどのように修正できるか知っていますか?
これはUIWebViewのバグである可能性があります。 http://blog.techno-barje.fr/post/2010/10/04/UIWebView-secrets-part1-memory-leaks-on-xmlhttprequest/ –
@ H2CO3:ありがとう、私もそれを試みた...改善はありません。 .. – sergio
私たちはiOSによって保存されていると思います。8.この回答をWKWebView http://stackoverflow.com/questions/16514230/massive-memory-leak-in-ios-uiwebviewでチェックアウトしてください –