1

UIWebView に問題があります。このコンポーネントを使用して、iPad/iPhone で通常の Web ページをロードしています。UIWebView は modalViewController で提供されます。一部のページはメモリを大量に消費しており、一部のページには Flash コンテンツも含まれています。

問題は、一部のページでメモリ警告が表示されることがあることです

Received memory warning. Level=1

これが発生し、この modalViewController (webView にページがロードされている) を閉じると、以前のビューが自動的にリロードされます - メソッド viewDidLoad が再び起動されます。

UIWebView の一部のページが大量のメモリを消費し、アプリケーションがそのビューのメモリを解放するよりもクラッシュしないと思われます。

webView のメモリ消費を制限する方法はありますか、またはこのメモリ警告を回避する他の方法はありますか?

ありがとう!

4

1 に答える 1

3

UIWebViewオブジェクトのメモリ使用量をほとんど制御できません。また、システム全体のメモリ使用量をほとんど制御できません。したがって、メモリ警告を回避する方法はありません。iOS は、メモリ警告を受け取ったときにアプリが適切に動作することを期待しているためviewDidLoad、メモリ警告後の再実行を処理するようにメソッドを記述する必要があります。

のメモリ使用量を制限するためにできる唯一のことは、UIWebView単純な Web ページを表示させることです。あなたの質問から、それはオプションではないようです。

編集: viewDidUnloadメモリ不足の状態で呼び出されます。このメソッドは、viewDidLoad メソッドで簡単に再作成できるものをすべて解放することが期待されています。このビューが画面に戻ったときに、ユーザーに表示したい状態情報を解放しないでください。次に、viewDidLoadメソッドで、作成したすべてのオブジェクトをチェックします。である場合はnil、初期化する必要があります。それ以外の場合は、メソッドが呼び出されたのはこれが初めてではないため、viewDidLoad後でオブジェクトを初期化しないでください。

言い換えればviewDidUnload、メモリ不足の状況を処理し、viewDidLoad一度実行されると想定すべきではありません。

于 2011-08-25T13:44:24.960 に答える