我有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];
}
这段代码第一次完美无缺。但是当我得到新的网址时,它会工作一段时间或者崩溃。我不知道为什么会崩溃。我想停止那场崩溃。如果您没有回答我的问题,请告诉我。请帮帮我。提前致谢。有效的答案将不胜感激。
答案 0 :(得分:0)
感谢大家对我的问题提供全面评论。我收到了错误。我在为uiimageview分配内存时将CALayer添加到uiimageview。我删除了那个CALayer代码,它运行得很好。尼基塔的评论帮助我找到了我的错误。