2009-11-05 88 views
2
NSMutableArray *images = [NSMutableArray arrayWithObjects:[UIImage imageNamed:@"JGirl 01.jpg"], 
    [UIImage imageNamed:@"JGirl 03.jpg"], ... , 
    [UIImage imageNamed:@"JGirl 48.jpg"], 
    nil]; 

self.view = [[[SlideShowView alloc] initWithImages:images byIndex:index] autorelease]; 

假设我的图像包含48个对象,但是当我调试图像只有23个对象。问题与NSMutableArray arrayWithObjects:

为什么我所有的图像都不是加载?

+0

我看不出你创建数组的方式有什么明显的问题。也许你还应该发布initWithImages:byIndex:方法,以便我们可以看到发生了什么。显示您正在检查阵列内容的位置也很有帮助。 – nduplessis 2009-11-05 11:30:35

+1

你应该使用initWithContentOfFile :, imageNamed:使用方式来记忆很多。 – gcamp 2009-11-05 23:18:43

回答

9

听起来像无终止问题。 如果其中一个图像对象(可能是第24个)由于名称中的拼写错误或已损坏/不存在的图像文件而返回nil,它将像最终的“nil”一样终止列表和您的数组在此之后将忽略所有内容。这是一个常见的与arrayWithObjects错误:和dictionaryWithObjectsAndKeys:

+0

这是有道理的 – nduplessis 2009-11-05 11:31:44

1

你真的不应该加载到iPhone OS的内存中的许多图像,当你这样做,你必须加载图像的整个RGB表示,这是'考虑到设备上的资源限制,你真的想做什么。