は、3つの状況が発生する可能性があります:iPhone - アプリがメモリ不足の警告メッセージを受信すると、メモリ不足の状況に対処する方法
- のアプリがちょうど開始されていると、ユーザーが特別な何もしていません
- アプリが実行されていると
- アプリはいくつかの実行中のコンテキスト
...しかし、バックグラウンドであり、現在のコンテキストがありますか?そしてどうやって ?
私がいることを理解:
initWith
が.....デフォルトの静的な値を設定する必要があります。viewDidLoad
は、これらの非静的オブジェクトを解放しなければならない任意の非静的オブジェクトdidReceiveMemoryWarning
をロードする必要があり は、私が何を/
は私が推測する... viewDidUnload
に行われなければならないことができます表示されていないいくつかの値を保持し
アクティブなコンテキスト(画面の位置、表示されたテキストなど)で行う必要があるので、viewDidLoadが再び呼び出されると、それらはmemoryWarningコールの前にどこに表示されますか?
私は意味、想像2のシナリオ:
シナリオ1
- あなたは...あなたは別のビューを開いて、それを保存していなかった、フィールド内のテキストを書いた何かに取り組んでいます、画面上のビューを移動しました。
- アプリをバックグラウンドで送信します。
- 次に、メモリウォーニングがアプリに送信されます。
- その後、ユーザーはアプリをフォアグラウンドに送信します。これは、終了時のようなものを前のビューと同じように表示するはずですが、すべてがリリースされている場合はどうすればよいでしょうか?
シナリオ2
- あなたは、別のビューを開いて、画面上のビューを移動し、それを保存していなかった、フィールド内のテキストを書いた...何かに取り組んでいます。
- 次に、メモリウォーニングがアプリに送信されます。
- ビュー上の内容や前のビューの内容を失いたくないです。あなたは、リリース/リロード機能のために画面がちらつくのを望まない。あなたはこれにどのように対処していますか?
これらのメモリの警告が発生した場合、後で表示するためにディスクに書き込む以外の方法がありますか?
いつそれらを再度ロードしますか?私は(viewDidLoad)をロードするviewControllerを持って、memoryWarningを受け取り、(viewDidUnload)をアンロードしますが、それに戻るとき、viewDidLoadは再び呼び出されませんか?これはviewWillAppearで行う必要がありますか?私はいつでもviewWillAppearがトリガーされると考える必要があります、私はそれに表示されるはずのものが読み込まれていると仮定することができますか?
貴重なリンクがあっても、どんな助力も素晴らしいことでしょう。
ありがとうございました。
didReceiveMemoryWarning // in your NSObjects
、その後
applicationDidReceiveMemoryWarning // in your app delegate
あなたがメモリを解放したい場合は、これらの方法には、次のとおりです。
私の場合、ちらつきの代わりにアプリを殺すのが良いでしょう。私はユーザーデータを持っていませんが、生成された内容はありません。これらのコンテンツは、非円滑な方法で生成されるのではなく、失われた方がいいです。 – Oliver