3

助けてください、didReceiveMemoryWarning と正確に何をしなければならないのかわかりません。私のアプリは正常に起動しましたが、実行中のバックグラウンド アプリが多すぎると、メモリ警告を受け取り、終了します。ユーザーにいくつかのバックグラウンド アプリを終了するように求めるアラートを表示したいだけです。

appDelegate があり、そのウィンドウには viewController のビューがあり、2 つのサブビュー (OpenGL ビュー上の XIB) が割り当てられた (複合) 別のビューがあり、これは viewController の cameraOverlayView に設定されています。

警告ですべてのものを 1 つにリリースしようとしましたが、それでも終了しました。各サブビューに didReceiveMemoryWarning を実装する必要がありますか? どうにかして初期化プロセスを「強制終了」できますか?

4

1 に答える 1

2

アプリがアクティブなときにアプリが終了している場合は、メモリリークが発生している可能性があり、アプリが大量のメモリを消費している可能性があります。

OSがメモリ不足を開始すると、最初に最もメモリを消費するアプリから始めて、最後に最前面のアプリからバックグラウンドタスクを終了します。ユーザーは、メモリを節約するためにバックグラウンドアプリを手動で終了する必要はありません。これはすべて自動的に行われます。

アプリがバックグラウンドにある場合は、いつでも終了できます。あなたができる最善のことは、全体的なメモリ使用量を減らし、OSがあなたの前に他のよりメモリを大量に消費するアプリを殺すことを願っています。

didReceiveMemoryWarningこれは通常、アプリのフットプリントを削減するために試行する必要のあるキャッシュデータを解放する場所です。ビューが現在表示されていないアプリ内のビューコントローラーはすべてアンロードされ、viewDidUnloadメソッドが呼び出されます。IBOutletここで、プロパティをnilに設定する必要があります。

ただし、アプリがアクティブなときにアプリが終了する場合は、Instrumentsのリークツールを使用して、リークがなく、異常に大量のメモリを消費していないことを確認する必要があります。

于 2010-07-30T09:34:48.927 に答える