画像を遅延読み込みしている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];
}
}