UIScrollViewを使用して、検索条件に基づいて画像のリストを表示するアプリを開発しています。ボタンを使用すると、ユーザーはより多くの画像を読み込むことができます。
iPhone 4でテストすると、ViewControllerは最大750枚の画像でメモリ警告を受け取ります。iPodの第2世代でテストすると、約150枚の画像でメモリ警告が表示されます。
私の理解では、didReceiveMemoryWarningが呼び出されると、オブジェクトを解放することでメモリを解放できますが、メモリ不足からの回復は保証されません。
didReceiveMemoryWarningを実装し、基本的にすべてのオブジェクトをリリースしました。機器では、メモリ使用量が約3MBに低下します。iPodが初めてメモリ制限に達すると、すべてがうまくいき、メモリが解放され、アプリは通常の動作を再開します。ただし、2回目にdidReceiveMemoryWarningを呼び出すと、解放されたオブジェクトを確認できますが、とにかくアプリがクラッシュします。
では、どうすればアプリをクラッシュプルーフにすることができますか?アプリを実行しているすべてのデバイスがメモリが許す限り多くの画像をロードできることを確認したいのですが、アプリがクラッシュしないことも確認したいと思います。
アプリがdidReceiveMemoryWarningに到達せず、表示できる画像の数に制限を設定したいのですが、各デバイスがロードできる画像の数をどのように決定できますか?
また、画像のサイズは保証されません。テスト中に、iPodでこの任意の数の150に到達しましたが、ある時点でサーバー上の画像が2倍の大きさである場合はどうなりますか?その場合、アプリはおそらく75枚の画像でクラッシュします。
何か疑惑はありますか?