我的应用中有大约500张图片作为资源。
首先,这是件坏事吗?我怎么能存储它们?
其次,当我按如下方式加载它们时:
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中,我不知道如何根据需要加载它们,因为如果必须动态加载图像,我会担心滚动性能。
感谢任何帮助。
谢谢
答案 0 :(得分:1)
只要正确处理内存管理,拥有500多张图片并不一定是件坏事。根据我的经验,imageWithCOntentsOfFile:
似乎比imageNamed:
更快。
就UIScrollView
性能而言,一次只处理少量图像将确保您的滚动不会延迟或不稳定。
就10MG与16GB设备而言,这完全无关紧要。 iPhone 3GS拥有大约128MB的免费存储空间; iPhone 4有大约300MB左右+大致取决于你在后台运行的内容。
您似乎正在尝试将所有500张图片加载到ScrollView中,这就是您获取空图像导致内存不足的原因。