2012-09-28 66 views
0

在我的应用我实现延迟加载了一类我称之为ThumbDownloader的iOS委托崩溃

开始图像下载,我的UITableView的cellForRowAtIndexPath方法调用此方法:

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

的thumbdownloader类时,完成下载图像,调用叫我在主类(listingView)的方法:

- (void)appImageDidLoad:(NSIndexPath *)indexPath 

的问题是,如果我进入listingView快速离开WH ILE图像被下载,应用程序崩溃与:

-[listingView appImageDidLoad:]: message sent to deallocated instance 0x3beed10 

这里是我的dealloc

- (void)dealloc 
{ 
    [myTable release], myTable = nil; 
    [imageDownloadsInProgress release], imageDownloadsInProgress = nil; 
    [spinView release], spinView = nil; 
    [mainView release], mainView = nil; 
    [tableView release], tableView = nil; 

    [myVs release], myVs = nil; 
    [filteredVs release], filteredVs = nil; 
    [toolBar release], toolBar = nil; 

    [super dealloc]; 
} 

我试图通过imageDownloadsInProgress内Thumbdownloader实例迭代他们的代表设为零,但是当我尝试,它崩溃,以及...这样的:

- (void)dealloc 
{ 

    for(ThumbDownloader *thumbDownloader in imageDownloadsInProgress) 
     if(thumbDownloader !=nil && thumbDownloader.delegate!=nil) 
      thumbDownloader.delegate = nil; 

    ..... 

回答

0

如果您使用一套图像UIImageView的代码,你应该尝试使用从这个问题AFNetworking框架0类。您只需设置[image setImageWithUrl:@"http://myImage"];

+0

对不起,这不帮助我。我需要知道,用我现有的代码,如何设置委托,以零因此它不崩溃 – boostedz06