60のスクロールビューがありますUIImageView's
。これらの画像ビューに表示される画像は、Webサービスから取得したURLおよびURLからのものです。ユーザーが一番下までスクロールすると、Webサービスを呼び出して、新しい60のURLを取得します。URLを取得した後、私は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];
}
コードは初めて完璧に機能します。しかし、新しいURLを取得すると、しばらく動作しているか、クラッシュします。なぜクラッシュするのかわかりません。そのクラッシュを止めたい。あなたが私の質問に到達していない場合は、私に知らせてください。これを手伝ってください。前もって感謝します。有効な回答をいただければ幸いです。