2012-01-20 9 views
4

私は、ユーザーページが前進または後退するたびに少なくとも2つのサブビューを持つUIViewを作成しているiPadアプリ(IOS 4.3 & 5.0)を持っています。 2つのサブビューはUIWebViewオブジェクトです。UIWebViewメモリリーク

すべてのスワイプで古いUIWebViewが削除され、適切に割り当て解除されます(removeFromSuperview、stopLoading、delegateをnilに設定)。親UIViewの割り当てが解除されます。親UIViewと2つの子UIWebViewsの両方が絶対になくなったことを確認できます。

ウェブビューの保持回数が削除されているのを見ることができます。毎回実際に削除されていると確信しています。 しかし、スワイプごとに私のメモリ割り当ては~200-350k増加し続けます。楽器には漏れはありませんが、メモリ使用量がゆっくりと上がっています。 iPad 1では、最終的に(中程度の使用から6〜10分以内に)アプリは複数のメモリ警告を受け取り、終了します。 LowMemoryクラッシュログなどが生成されます。

私たちは、stringByEvaluatingJavaScriptFromStringとloadRequestを使用してWebviewを作成します。 webViewsに何も注入されていない場合でも、メモリ使用量は急上昇します。

誰かがこのようなUIWebViewsの動作を経験していますか?誰もこれをうまく処理しましたか?

でも、&の回答は高く評価されますが、

+0

スーパービューから削除して、読み込みを停止し、デリゲートをnilに設定していますが、これらのウェブビューに余分な保持はありませんか?おそらく、あなたは '@property(nonatomic、retain)'を考慮していないでしょうか? – Tim

+0

こんにちは、あなたはこれを戦うすべての運を持っていましたか? –

+1

循環参照。私の意見の1つはまだコントローラに掛かっていました。かなり古典的なメモリのもののすべての後に、しかし、大規模なコードベースで対処するのは難しいです。 – smaura777

答えて

0

リークは認識していませんが、スワイプごとに同じビュー階層を破棄して再作成する場合は、ビューを保存して再利用してみましょう。

ウェブページが漏れているかどうかにかかわらず、Webビューは計算コストが高く設定されているため、コンテンツを再読み込みしてコンテンツをリロードするだけでパフォーマンスが向上し、リークも解決されるはずです。

+0

本当にここに選択肢はありません、はい、私は当初、およびメモリの割り当ては、まだすべてのスワイプ – smaura777

+0

http://stackoverflow.com/a/5056158/990618 –

1

「割り当て」テンプレートを使用してインストゥルメントを使用して、UIWebViewの「#Living」列を確認してください。私は通常、このようにそれを使用する:割り当てテンプレートと

  1. プロファイルアプリ
  2. などを周りにスクロールし、すべてのタブを通して行くことによってアプリ「アップ警告」を押して「マーク・ヒープ」、これが作成されます。 「ベースライン」heapshot
  3. あなたは原因が再び、これが表示されます「Heapshop番号」内のオブジェクトを点検し
  4. 「Heapshop#」heapshotを作成します周り
  5. を押して「マーク・ヒープを」滞在するオブジェクトだと思うことをしますか作成されたオブジェクトのサイズと数最後のヒープショット以来生きています。
  6. 後藤4
+0

に上がったことを私が過去一週間のためにそれを行ってきましたし、それはですwebviewsで何かがまだのWebViewが解放された後もぶらぶらしていることはかなり明白。一度すべてのWebviewsを無効にすると、問題はかなりなくなりました。 – smaura777

+0

[OK]をので、あなたは常に#livingする多数のオブジェクトのために上がることがわかり? –

0

まだこの問題がありますか?私は、無制限のメモリ使用量のようなものをトレース(必ずしも漏れを、私はメモリ不足の警告と最終的なプロセスの終了を取得)を超えると上stringByEvaluatingJavaScriptFromString呼び出すこと:

[webview stringByEvaluatingJavaScriptFromString:@"something()"]; 

そこに奇妙な何かがあるように思え。

+0

私はその方法をたくさん使用している、と私はそれにも見ています。残念ながら私はそれを何か他のものに置き換えることはできません。 – smaura777