UIImage在某些图片上返回零?

时间:2011-05-18 19:33:02

标签: iphone ipad ios4 xcode4

我的应用中有大约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中,我不知道如何根据需要加载它们,因为如果必须动态加载图像,我会担心滚动性能。

感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

只要正确处理内存管理,拥有500多张图片并不一定是件坏事。根据我的经验,imageWithCOntentsOfFile:似乎比imageNamed:更快。

UIScrollView性能而言,一次只处理少量图像将确保您的滚动不会延迟或不稳定。

就10MG与16GB设备而言,这完全无关紧要。 iPhone 3GS拥有大约128MB的免费存储空间; iPhone 4有大约300MB左右+大致取决于你在后台运行的内容。

您似乎正在尝试将所有500张图片加载到ScrollView中,这就是您获取空图像导致内存不足的原因。