2012-10-01 130 views
0

我有一個視圖,其中有一個UITableView,我懶加載圖像。我有一個名爲ThumbDownloader類,我初始化一個NSURLConnection的,並在完成加載圖像時connectionDidFinishLoading被稱爲內connectionDidFinishLoading,我作出這樣回我的主要觀點進行呼叫:iOS NSURLConnection委託問題

[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]; 
    } 
} 

回答

1

確保您清除在NSURLConnection的委託。

+0

...並確保呼叫取消連接 –

+0

我該如何去做這件事? – boostedz06

+0

[connection setDelegate:nil]; –

0

在ThumbDownloader類的dealloc方法只需添加

[connection cancel] 

。這將取消正在進行的下載並阻止消息被調用。

+0

我已經在ThumbDownloader中的dealloc中調用連接取消和連接釋放。問題是,我覺得我需要釋放thumbdownloader本身。 – boostedz06

+0

我假設你在viewDidUnload方法中調用[imageDownloadsInProgress release]。 – Shashikanth

+0

好吧,我正在調用[imageDownloadsInProgress release]在我的主視圖的dealloc中。現在不是viewDidUnload已棄用?我正在使用ios6 – boostedz06