0

複数のUIWebViewを多用するiOSアプリケーションを開発しています。すべてのリクエストは、アプリケーションバンドル内のローカルhtmlファイルからロードされます。ここで、割り当て解除時にメモリリークを防止するためのすばらしいヒントを見つけました:http://www.codercowboy.com/code-uiwebview-memory-leak-prevention

私が探しているのは、3つのUIWebViewインスタンスのプールを保持するFactoryクラスを作成することです。UIWebViewが要求されるたびに、このプールからインスタンスを要求する必要があります。したがって、必要に応じてWebViewの割り当てを解除する可能性があるメモリ警告が発生しない限り、WebViewの割り当てを解除することはありません。

これは私がこれまで考えてきたことであり、私の提案に対する追加のヒントやコメントを探しています。

  1. プールがいっぱいになると、WebViewを再利用する必要があります。先入れ先出しタイプのスタックになります。
  2. Webビューの再利用が要求されると、HTML実装で定義されたdestroyメソッドを実行して、グローバル変数を無効にします。これは、UIWebViewのstringByEvaluatingJavascriptFromStringを使用して実行できます。
  3. それが完了すると、WebViewはdocument.innerHTML="";を実行します。ドキュメントをクリアします。
  4. 再利用されたUIWebViewは、新しいリクエストをロードします。
  5. 複数の画像を使用すると、大量のメモリを使用する可能性があると聞きました。プール内のUIWebViewが画面に表示されていないときに、すべてのタグソースを小さな画像に置き換えることは有益でしょうか?

ここでの入力に感謝します!

ありがとう、ファーガル。

4

2 に答える 2

1

loadHTMLFromString または loadRequest を使用してコンテンツをリロードする代わりに、引き続き stringByEvaluatingJavascriptFromString を使用して、必要なコンテンツを含む特定の ID を持つセクションの innerHTML をすべて JavaScript で設定します。大量のメモリを使用することはありません。

于 2013-09-16T20:56:28.517 に答える