0

画像を遅延読み込みしているUITableViewを持つビューがあります。私はThumbDownloaderというクラスを持っており、NSURLConnectionを初期化し、connectionDidFinishLoadingが呼び出されたときに画像の読み込みが完了すると、connectionDidFinishLoading内で、次のように呼び出してメインビューに戻ります。

[delegate appImageDidLoad:self.indexPathInTableView];

私のメインビューには、ThumbDownloaderインスタンスの配列があります。配列の名前は、imageDownloadsInProgressです。

問題は、すべての画像のダウンロードが完了する前にビューに入ってすぐに終了すると、ゾンビが発生することです。

 -[myApp appImageDidLoad:]: message sent to deallocated instance 0xa499030

私はdeallocなどでThumbDownloaderインスタンスをリリースするためのさまざまな方法を試しましたが、何も機能していないようです。

ここで、インスタンスを設定して配列に追加します。

- (void)startIconDownload:(Product *)product forIndexPath:(NSIndexPath *)indexPath
{
    ThumbDownloader *thumbDownloader = [imageDownloadsInProgress objectForKey:indexPath];
    if (thumbDownloader == nil) 
    {
        thumbDownloader = [[ThumbDownloader alloc] init];
        thumbDownloader.product = product;
        thumbDownloader.imageSizeWidth = 87;
        thumbDownloader.imageSizeHeight = 87;
        thumbDownloader.indexPathInTableView = indexPath;
        thumbDownloader.delegate = self;
        [imageDownloadsInProgress setObject:thumbDownloader forKey:indexPath];
        [thumbDownloader startDownload];
        [thumbDownloader release];   
    }
}
4

2 に答える 2

1

NSURLConnectionのデリゲートを必ずクリアしてください。

于 2012-10-01T18:19:29.100 に答える
0

追加するだけ

[connection cancel]

ThumbDownloaderクラスのdeallocメソッド内。これにより、進行中のダウンロードがキャンセルされ、メッセージが呼び出されなくなります。

于 2012-10-01T18:22:49.897 に答える