2012-04-25 8 views
0

UIImageViewを使用して多数のフレームをアニメーション化すると、iOSはそれらをメモリにどのようにマップするのですか?単純に画像解像度xビット深度ですか(200x200の24bit TGAは200x200の24bit JPGと同じになります)画像内の未使用のアルファピクセルを考慮に入れる。また、Xcodeプロジェクトに読み込まれた画像(および使用されていない可能性があります)とメモリに直接読み込まれた画像(UIImage imageNamed:アプリ内から)を使用するとどうなりますか?UIImageViewのメモリ使用量

+1

計測器でメモリ消費量を監視し、監視するテストケースを設定するのは簡単です。 – fbrereto

+0

ありがとう、私はちょうどそれをします。 – fuzzygoat

答えて

1

イメージが24ビットであっても、デフォルトの色空間が4チャネルであるため、32ビットに圧縮解除されます。サイズは通常number_of_pixel_in_row*number_of_pixel_in_height*byte_for_pixelsです。私のテストでは、私はいつも異なったフォーマットのために同じメモリ消費量を見ました。イメージは、コンテキストで描画する必要があるときに遅延してロードされます。解放されないとメモリの圧力が維持されます。つまり、UIImageオブジェクトを作成しても、描画する必要があるまでは復元されません。 -imageNamedのようなメソッドはメモリ内のイメージをキャッシュしますが、私は通常、イメージを反復するためにのみ使用します。
希望すると便利です

+0

ありがとうございました。 – fuzzygoat

+0

あなたも大歓迎です。おそらく、Appleのこの豊富なコードも面白いと思いますが、iOS [LargeImageDownsizing](http://developer.apple.com/library/ios/#samplecode/LargeImageDownsizing/はじめに/ Intro.html) – Andrea