0

アプリにいくつかのタブがあります。現在、メモリが少なくなるたびにページがアンロードされるという問題に直面しています (特にアプリでカメラを起動した場合)。

これを軽減し、アンロードが起こらないようにする方法はありますか? または、ページのアンロードを許可する代わりに何かを実行できるように、アンロード プロセスをインターセプトする方法はありますか?

4

2 に答える 2

1

ビューのアンロードを防止しないでください。アプリケーションのメモリが不足した場合は、メモリを解放する必要があります。そうしないと、アプリがシステムによって強制終了されます。ビューだけでなく、できるだけ多くのメモリをクリーンアップする必要があります。

また、ビューはデータを表示するためだけにあります。ビューがアンロードされた場合、それは1つの特定の場合にのみ発生します。メモリ警告があり、ビューにスーパービューがありませんでした(ユーザーには表示されません)。ユーザーに表示されない場合は、メモリが不足しているときにそれを維持することはまったく意味がありません。これらのビューに[重要な]データを保存している場合、それは間違っています。データモデルはコントローラーに保持する必要があります。

于 2011-10-02T04:57:58.123 に答える
-1

メモリが少なくなると、すべてのビューコントローラがデリゲートメソッドを取得します:didReceiveMemoryWarningが呼び出されます。

UIViewControllerのデフォルトの実装は、ビューをアンロードすることです。

したがって、この動作をオーバーライドするために必要なのは、メソッドをオーバーライドすることだけです。

- (void)didReceiveMemoryWarning
{
    //[super didReceiveMemoryWarning]; - calling this will unload the view

    // Relinquish ownership any cached data, images, etc that aren't in use.
}
于 2011-10-02T08:14:59.307 に答える