アプリがメモリ不足の警告メッセージを受け取ると、次の 3 つの状況が発生する可能性があります。
- アプリが起動されたばかりで、ユーザーが特別なことをしていない
- アプリが実行中で、現在のコンテキストがある
- アプリは実行中のコンテキストでバックグラウンドにあります
したがって、このメッセージを受け取ったら、メモリを解放する必要があります...しかし、どこで? そしてどうやって ?
という事は承知しています :
initWith
..... デフォルトの静的値を設定する必要があります。viewDidLoad
非静的オブジェクトをロードする必要がありますdidReceiveMemoryWarning
これらの非静的オブジェクトを解放する必要があります- 何ができるか、何をしなければならないかわかりません
viewDidUnload
...
いくつかの保持された値は、どこかで nil に設定する必要があると思います... didReceiveMemoryWarning で?
そして、アクティブなコンテキスト (画面の物の位置、表示されたテキストなど) で何をしなければならないので、viewDidLoad が再度呼び出されると、それらは memoryWarning 呼び出しの前の場所に再び表示されますか?
つまり、2 つのシナリオを想像してください。
シナリオ 1
- あなたは何かに取り組んでいます... フィールドにテキストを書きましたが、それを保存せず、別のビューを開き、画面上のビューを移動しました。
- アプリをバックグラウンドで送信します。
- 次に、memoryWarning がアプリに送信されます。
- その後、ユーザーはアプリをフォアグラウンドに送信します。以前のビューと同じように、現在のビューで終了時のように表示する必要がありますが、すべてが解放されている場合、どうすればこれを行うことができますか?
シナリオ 2
- あなたは何かに取り組んでいます... フィールドにテキストを書きましたが、それを保存せず、別のビューを開き、画面上のビューを移動しました。
- 次に、memoryWarning がアプリに送信されます。
- ビューにあるものや、前のビューにあったものを失いたくありません。リリース/リロード機能のために画面がちらつきたくありません。これにどう対処しますか?
これらのメモリ警告が発生した場合、ディスクに書き込んで後で表示する以外に選択肢はありますか?
そして、いつそれらを再度ロードしますか?ロード (viewDidLoad) し、memoryWarning を受け取り、アンロード (viewDidUnload) する viewController がありますが、それに戻ると、viewDidLoad は再度呼び出されませんか? これは viewWillAppear で行う必要がありますか? viewWillAppear がトリガーされるたびに、そこに表示されるはずのものが読み込まれていると考える必要がありますか?
貴重なリンクがあっても、どんな助けも素晴らしいでしょう!
ご協力ありがとうございました。