0

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を取得すると、しばらく動作しているか、クラッシュします。なぜクラッシュするのかわかりません。そのクラッシュを止めたい。あなたが私の質問に到達していない場合は、私に知らせてください。これを手伝ってください。前もって感謝します。有効な回答をいただければ幸いです。

4

1 に答える 1

0

私の質問にあなたの助けに完全なコメントを与えるためにすべてに感謝します。エラーが発生しました。uiimageviewにメモリを割り当てるときに、CALayerをuiimageviewに追加しています。そのCALayerコードを削除すると、完全に機能します。Nikitaのコメントは、私のエラーを見つけるのに役立ちます。

于 2013-02-12T05:43:10.120 に答える