1

現在のアプリを開発しているときに、メモリ不足の警告にたどり着いたいくつかの問題に遭遇しました。メモリ不足の一部は、明らかに多くのメモリを消費している UIWebViews の (リベラルな) 使用によるものです。

現在表示されていないビューは、メモリ不足の警告がスローされたときに消えるはずなので、これが問題になるとは思いませんでしたが、残念ながら、 UITabBarController に接続されているものはすべて階層に残り、解放されないことが判明しました. ビューを手動で解放 (その後、viewWillAppear で再作成) することで、適切に動作するようにします。ただし、メモリ警告の問題が完全に解決されるわけではありません。

したがって、私がしなければならないことは、手動でビューを解放し、ビューに接続されてしまう大量のメモリを解放し、復元することです。プログラムでビルドしたくないので (それが IB の目的です!)、どうにかしてストーリーボードからリロードする必要があります。

または、代わりに、私はばかであり、私の人生を楽にするために本当に明白な何かがあります.

4

1 に答える 1

1

さらに実験を重ねた結果、ビューのライフサイクルの理解にわずかな欠陥があり、誤ってゾンビオブジェクトをオンにしたことで実験が汚染されたことが判明しました。

実際、ビューはメモリ不足の状態でコンテンツをアンロードし、後でリロードします。これは、「viewDidLoad」および「viewDidUnload」の設計の一部です。私が読んだいくつかのチュートリアルが行ったように、それらにinitコードを入れることは大きなエラーでした。その初期化コードは、指定された初期化子に入れる必要があります。たとえ、どの初期化子が指定されているかを理解するのが面倒な場合でも。

于 2012-09-23T01:29:06.867 に答える