开发者

How to check if a view is valid iphone

开发者 https://www.devze.com 2022-12-22 01:20 出处:网络
I am having trouble with my UITableView in the NavigationController. When I add data to the table I use another class to download images to display in that table, while all that works great but if in

I am having trouble with my UITableView in the NavigationController. When I add data to the table I use another class to download images to display in that table, while all that works great but if in the middle of images being download I swtich back to the previous view in the navigationcontroller app crashed.

Here is my code to explain further

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    // Set appIcon and clear temporary data/image
    UIImage *image = [[UIImage alloc] initWithData:self.activeDownload];
    UIImage *appIcon;

    if (image.size.width != kAppIconHeight && image.size.height != kAppIconHeight)
    {
        CGSize itemSize = CGSizeMake(125, 85);
        UIGraphicsBeginImageContext(itemSize);
        CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);
        [image drawInRect:imageRect];
        appIcon = UIGraphicsGetImageFromCurrentImageContext();
        ///UIGraphicsEndImageContext();
    }
    else
    {
        appIcon = image;
        //self.appRecord.appIcon = image;
    }

    self.activeDownload = nil;


    // Release the connection now that it's finished
    self.imageConnection = nil;

    // call our delegate and tell it that our icon is ready for display
    if(delegate != nil)
    [delegate appImageDidLoad:self.indexPathInTableView imaged:appIcon ];

 [image release];

}

The appImageDidLoad is a method that exists in my UITableView view.

Is there a way I can check to see if the UITableView is valid in my imagedownload class so I know not to s开发者_如何学运维end the image.

Thanks in advance.


The crash is due to delegate getting release by the time the image was ready!

Try this in ViewWillDisappear

// terminate all pending download connections
NSArray *allDownloads = [self.imageDownloadsInProgress allValues];
[allDownloads performSelector:@selector(cancelDownload)];


This is the solution for this crash.

-(void)viewDidDisappear:(BOOL)animated 
{
    [super viewDidDisappear:animated];

    // terminate all pending download connections

    NSArray *allDownloads = [self.imageDownloadsInProgress1 allValues];

    [allDownloads makeObjectsPerformSelector:@selector(cancelDownload)];

}
0

精彩评论

暂无评论...
验证码 换一张
取 消