IOSはどのように画像のロード方式を選択しますか?イメージカードとイメージWithContintensOfFileの違い.

2092 ワード

IOSはどのように画像のロード方式を選択しますか?イメージカードとイメージWithContintensOfFileの違い.
著者:wangzz
原文の住所:http://blog.csdn.net/wzzvictory/article/details/9053813
転載は出典を明記してください.
もし文章があなたに役に立つと思いましたら、メッセージやWeChat公式アカウントwangzstriveを通じて応援してください.ありがとうございます.
 
IOSメモリは不足していますが、写真資源は常にメモリの一部を占めています.そのため、どのように画像をロードするかを選択して、メモリの使用量を最適化して、効果を発揮できます.画像を通常読み込む方法は2つあります.
一、イマジネーションNamed
なぜ同じことをやり遂げる二つの方法があるのですか?image Namedの利点は、既に読み込まれている画像をキャッシュすることができることである.アップルの文書には次のような言い方があります.
This methodod look s in the sysstem caches for a mage ooject with the speciiiifed name and returns and returns Stat oject iiteeexists. If a matmatmatiage ojage oject isisist already in the cache,this is athismethismethismethismethodododododod locatetetetes andandandandandandandandandandandandandandandandandandandandandandandandandandandandandandandandandandandaaaatotototototoststststststststststststststststodis thread safe.
この方法はまずシステムキャッシュで指定された名前に基づいて画像を探します.見つけたら戻ります.キャッシュに画像が見つからなかったら、この方法は指定されたファイルから画像データをロードしてキャッシュし、結果を返して、今度はその名前の画像を使う時はハードディスクから画像をロードするプロセスを省略します.同じ名前の画像に対して、システムは一度だけCacheをメモリに保存します.
また、iOS 4および以上のシステムでは、PNG形式の画像であれば、この方法でロードする際にファイルを指定しなくても良い.
最後に、iOS 4および以上のシステムでは、スクリーンのscaleが2(すなわち高解像度スクリーン)である場合、この方法は、@2 xの拡張子を加えた画像を自動的に使用する.例えば、高解像度のスクリーンデバイスに、「ブトン」という名前の画像をロードするには、この方法は自動的に名前を付けます.button@2xの写真この名前の画像が見つからなかったら、ブトンという名前の画像をロードします.これは開発者のために、高解像度、低解像度のスクリーンの時間を省きました.
二、イマジWithContintents OfFileまたはイマジWithData
イメージWithContintOfFileの方法は単に画像をロードするだけで、画像をキャッシュすることはありません.画像はシステムによってデータとしてプログラムにロードされます.画像を再利用する必要がない場合や、画像をデータ形式でデータベースに保存する必要がある場合や、ネットワークを介して大きな画像をダウンロードする場合には、このような方法が使えます.
三、どうやって選ぶか
2つの画像をロードする方法の使い方:
UIImage *img = [UIImage imageNamed:@"myImage"]; // caching  
// or  
UIImage *img = [UIImage imageWithContentsOfFile:@"myImage"]; // no caching
はどうやって選択しますか?
大きな画像を読み込み、一度だけ使用すると、この画像はキャッシュされなくなります.この場合はイマジWithContintOfFileが適しています.システムはメモリを無駄にして写真をキャッシュしません.
しかし、プログラムの中でよく再利用される画像、例えばUITTable Viewの画像は、imageNamedの方法を選択したほうがいいです.この方法はディスクから画像をロードする時間を節約することができる.