最近変更を加えた既存のアプリがあり、それらの変更をテストしています。このアプリは、私がテストしたすべてのiPad(iOS4およびiOS5)で完全に正常に動作します。アプリに画像の多いビューをいくつか(50以上)読み込んだ後、メモリ不足の警告が表示され、viewDidUnloadメソッドが呼び出され、すべてのコントロールが適切に無効になり、メモリ内の画像キャッシュが自動的にクリアされ、アプリはそのまま続行されます大丈夫。
ただし、iPhone 4およびiPhone4s(iOS5.0.1およびiOS5.1)では、メモリ不足の警告が表示されずにアプリケーションのメモリが不足するという問題が発生します。いくつかの異なるビューを読み込んだ後、最終的に新しいビューが表示され、ほとんど空白になります。コンソールにメモリ割り当てメッセージが表示され、電話全体が応答しなくなり、アプリが停止することがあります。
これが発生する特定のビューは毎回異なるため、1つのビューとは関係がなく、時間の経過に伴うメモリの蓄積だけが関係します。また、メモリリークも発生していないことを確認しました。
この既存の質問は似ています:
低メモリのためにIOSアプリが強制終了されましたが、メモリ警告が受信されませんでした
その答えは、私がループでスタックしている場合にこれが発生する可能性があることを示唆していますが、私のコードがループでスタックしていないことはかなり確信しています。UINavigationControllerでビュー間をクリックするだけで、各ビューに複数の画像が読み込まれます。また、もう1つの質問は、特にiPadで発生していましたが、この問題はiPadでは発生せず、iPhoneのみで発生しました。
ところで、NotificationCenterを介してメモリ不足通知に登録しようとしましたが、アプリデリゲートにapplicationDidReceiveMemoryWarningメソッドがあり、両方にブレークポイントがあり、どちらも呼び出されません。また、デバッガコンソールにもメモリ不足のメッセージは表示されません。
何が起こっているのかについてのアイデアはありますか?
2012年3月26日に追加:
興味深いことに、新しいiPadでアプリをテストしたところ、メモリ不足の通知が受信されないiPhone4および4sで見られるのと同じ問題が発生します。したがって、この他のスレッドと同じ問題が発生しているのではないかと思います。
ただし、そのスレッドの開発者はiPadのみのアプリをテストしているため、どのiPhoneでも同じ問題をテストして見つけていません。
私はいくつかの広範なテストを行い、メモリ不足の警告を適切に受信したデバイスと、これまで受信しなかったデバイスのリストを持っています。これまでのところ、問題はiOS5以降でのみ発生しますが、iOS 5.0および5.1を搭載したiPad1では問題が発生しないため、iOS5のすべてのデバイスで問題が発生するだけではありません。
そのリストは次のとおりです。
適切なメモリ不足の警告
iPad1 4.2.1
iPad1 5.0
iPad1 5.1
iPad2 4.3.3
iPhone3G 4.2.1
iPod 3G 4.3.3
iPhone4 4.3.3
低メモリ警告なし
iPhone4 5.1
iPhone4s 5.0.1
iPad3 5.1