1

直感的に、キャッシュ UIImage の初期化 ( imageNamed) を使用すると、ディスクからロードするときに時間の節約になるだけではないと常に感じていました。また、メモリの問題でもあると思いUIImageました。同様のデータを持つ複数の異なるインスタンスを持つ代わりに、そのデータはメモリに 1 回読み込まれます。

を使用すると、メモリimageNamedの使用効率が向上しますか?

4

1 に答える 1

2

はい、メモリの使用効率も向上します。

ドキュメントによるとimageNamed:

このメソッドは、指定された名前のイメージ オブジェクトをシステム キャッシュで検索し、存在する場合はそのオブジェクトを返します。一致する画像オブジェクトがまだキャッシュにない場合、このメソッドは指定されたファイルから画像データをロードしてキャッシュし、結果のオブジェクトを返します。

ここで重要なのは、「システム キャッシュで画像オブジェクトを検索する」ことです。

確認のために、5 つの画像ビューと 1 つのボタンを含むサンプル プロジェクトを作成しました。5 回呼び出しimageNamedて 5 つすべてを設定すると、Instruments でヒープが 19.5k 増えました。を使用するimageWithContentsOfFile:と、66.5k 増加しました。

于 2012-12-27T00:52:32.063 に答える