UIImageViewにロードする大きな画像があります。画像はPNGで、@2xのファイルサイズは384Kです。画像は5119x2413ピクセルです。ユーザーはピンチジェスチャを使用して画像をズームできます。画像が非常に大きい理由は、ピンチしてUIImageViewを変換しても、品質が変わらないようにするためです。
私が抱えている問題は、一部のデバイス、特に最新のiPod Touchで、この画面を表示しようとするとクラッシュすることです。
Instrumentsを介してアプリを実行し、Leak/Allocationsプロファイルを使用してプロファイルを作成しました。アプリを使用する場合、アプリのライブバイトは通常約4MBですが、UIImageViewを含む画面を表示するとすぐに、最大40MBになります。画像が画面に表示されると、メモリは約4MBに戻ります。
私が抱えている問題は、古いデバイスやiPod Touchのようなメモリによって制限されているデバイスでは、SpringBoardのようないくつかのシステムサービスとともに、私のアプリがシステムによって終了されることが多いということです。
画像をキャッシュすることを知っているので、画像をロードする[UIImage imageWithContentsOfFile:]
代わりにを使用してみましたが、これは効果がありませんでした。[UIImage imageNamed:]
[UIImage imageNamed:]
初めて画像を表示しようとしたときに発生したライブメモリの急増がメモリ不足の状況を引き起こしており、アプリがOSによって終了されているようです。
これを修正する方法と、AppleがPhotosアプリでの大きな画像の読み込みをどのように処理しているかに興味があります。
念のため、私はARCとiOS5.1.1をXCode4.4.1で使用しています。