我收到错误对象不能是nill。当我使用循环解析它时它崩溃并发送出去,我的代码是

时间:2013-11-26 10:34:53

标签: objective-c

NSMutableArray *animateImage =[[NSMutableArray alloc]init];
for ( int i = 1 ; i <= listImages.count ; i++)
{
    [animateImage addObject:[UIImage imageNamed:[listImages objectAtIndex:i]]];
}

UIImageView *animation= [[UIImageView alloc]initWithFrame:CGRectMake(10,110, 315,180)];

animation.animationImages=animateImage;

animation.animationDuration = 3.00;

[self.view addSubview:animation];
[animation startAnimating];

请帮帮我。我不知道我在哪里做错了

3 个答案:

答案 0 :(得分:1)

基于你粘贴和解释的内容,我只能猜测,但很可能你正在加载一个不存在的imageNamed:导致:

addObject:nil

您可以检查图像是否为零并打印出来以找出导致图像崩溃的图像。

for ( int i = 1 ; i <= listImages.count ; i++)
{
    NSString* imageName = [listImages objectAtIndex:i];
    UIImage* image = [UIImage imageNamed:imageName];
    if(image)
    {
         [animateImage addObject:image]];
    }
    else
    {
         NSLog(@"non existing image: %@", imageName);
    }
}

打印阵列中的所有值,并确保目标中包含列出的所有图像。记住区分大小写。

另外你应该修复你的循环:

for ( int i = 0 ; i < listImages.count ; i++)
{

}

否则它会在最后一个元素上崩溃,因为它超出了数组范围。

答案 1 :(得分:0)

而不是这段代码:

NSMutableArray *animateImage =[[NSMutableArray alloc]init];
for ( int i = 1 ; i <= listImages.count ; i++)
{
    [animateImage addObject:[UIImage imageNamed:[listImages objectAtIndex:i]]];
}

将其替换为:

NSMutableArray *animateImage = [[NSMutableArray alloc] init];
for (int i = 0; i < listImages.count; i++) {
    [animateImage addObject:[UIImage imageNamed:[listImages objectAtIndex:i]]];

}

快乐的编码......:)

答案 2 :(得分:0)

在将图像添加到阵列之前,应该验证图像是否为零。试试这个:

NSMutableArray *animateImage = [[NSMutableArray alloc] init];
for (int i = 0; i < listImages.count; i++) {
    UIImage *img = [UIImage imageNamed:[listImages objectAtIndex:i]];
    if (img != nil)
        [animateImage addObject:img];
}