iOS NSURLConnection委托问题

时间:2012-10-01 18:16:19

标签: ios delegates nsurlconnection

我有一个视图,其中有一个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];   
    }
}

2 个答案:

答案 0 :(得分:1)

确保清除NSURLConnection上的委托。

答案 1 :(得分:0)

添加

[connection cancel]

在ThumbDownloader类的dealloc方法中。这将取消正在进行的下载,并将阻止调用该消息。