2011-05-18 6 views
0

私は約500の画像をリソースとしてアプリケーションに持っています。UIImageは一部の画像でnilを返しますか?

まず、悪いことはありますか?他にどのように保管できますか?

第二には、私はそれらをロードするとき、次のように:

for (int i=0; i < [imageArray count]; i ++) 
{ 
    IngredientObject * o = ((ImageObject*)[imageArray objectAtIndex:i]); 
    UIImage * img = [UIImage imageNamed:o.imageName]; 
    . 
    . 
    . 
} 

はいつかそれがnilを返します。私はそれがメモリ問題であると仮定しています。実際のデバイスでのみシミュレータ上で起こるわけではないからです。それぞれの画像は小さいです...それぞれ約10kから20kですが、それでも約10megになります。私は16GBのデバイスでこれが問題になるとは思わなかった。

imageNamed:を使用せず、imageWithContentsOfFileなどの方法を使用する方がよいでしょうか。このイメージは最終的にはUIScrollerViewにあり、イメージを動的にロードする必要がある場合、スクロールのパフォーマンスが心配だったので、必要に応じてロードする方法がわからない。

何か助けていただければ幸いです。

は、限り、あなたは正しくメモリ管理を扱うように、あなたが

答えて

1

それは必ずしも悪いことでは500枚の以上の画像を持っていますありがとうございました。私の経験では、imageWithCOntentsOfFile:imageNamed:よりもずっと速いようです。

UIScrollViewまでは、一度に少数の画像しか扱わないため、スクロールが遅くなることがありません。

10MG対16GBデバイスまでは、まったく関係ありません。 iPhone 3GSには約128MBのFREE MEMORYがあります。 iPhone 4は、バックグラウンドで実行しているものに応じて、およそ300MBの+どこかにあります。

500枚の画像をすべてScrollViewに読み込もうとしているようですが、空の画像が得られてメモリが足りなくなっているようです。

+0

imageWithContentsOfFileに変更して、スクロールビューに表示されるように画像をダイナミックに読み込むことをお勧めしますか? – LilMoke

+0

そうですね、まずそれを試してみましょう。そして、あなたの記憶がどこに行くのかを知るために漏れを実行してください。私にとっては、画像の量が少ないときには 'imageWithContentsOfFile:'が動作するように見えましたが、ファイルサイズははるかに大きかったです。 – WrightsCS

+0

スクロールビューでイメージを動的に読み込む方法の例があります。私はそれらが画面から2〜3つのインデックス離れているときにロードしたいと思っています。 – LilMoke