应用程序在加载iphone的背景图像中崩溃

时间:2013-02-05 12:41:32

标签: iphone ios uiimageview uiimage lazy-loading

我有60 UIImageView's的滚动视图。在这些图像视图中显示的图像来自网址服务中的网址和网址。当用户滚动到底部时,我会调用webservice并获取新的60个网址。获取网址后,我使用相同的UIImageView's来显示图片。以下是我显示图像的代码。

for (UIView *viewSel in [scrlView subviews]) {
    NSString *strImgUrl = [arrImgURL valueForKey:@"url"];
    if ([viewSel isKindOfClass:[UIImageView class]]) {

            UIImageView *imgView = (UIImageView *)viewSel;

            [imgView setImage:[UIImage imageNamed:@"loading432x520.png"]];

            NSMutableArray *arr = [[NSMutableArray alloc] init];

            [arr addObject:[NSString stringWithFormat:@"%@",strImgUrl]];

            [arr addObject:imgView];
            [self performSelectorInBackground:@selector(loadImageInBackground:) withObject:arr];

            [arr release];
    }
}


- (void) loadImageInBackground:(NSMutableArray *)arr  {

    NSLog(@"loadImage");
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[arr objectAtIndex:0]]];
    UIImage *img    = [[UIImage alloc] initWithData:imgData];
    if (img != nil) {
        [arr addObject:img];
    }
    else{
        [arr addObject:[UIImage imageNamed:@"no-image432x520.png"]];
    }
    [img release];
    [self performSelectorOnMainThread:@selector(assignImageToImageView:) withObject:arr waitUntilDone:YES];
    [pool release];
}
- (void) assignImageToImageView:(NSMutableArray *)arr{
    NSLog(@"assignImage");
    UIImageView *imgView = [arr objectAtIndex:1];
    imgView.image = [arr objectAtIndex:2];
}

这段代码第一次完美无缺。但是当我得到新的网址时,它会工作一段时间或者崩溃。我不知道为什么会崩溃。我想停止那场崩溃。如果您没有回答我的问题,请告诉我。请帮帮我。提前致谢。有效的答案将不胜感激。

1 个答案:

答案 0 :(得分:0)

感谢大家对我的问题提供全面评论。我收到了错误。我在为uiimageview分配内存时将CALayer添加到uiimageview。我删除了那个CALayer代码,它运行得很好。尼基塔的评论帮助我找到了我的错误。