ASIHTTPRequest, EXC_BAD_ACCESS when request did finished

asihttprequest, delegates, iphone, objective-c, selector

Solution

Are you sure that your class that implements `- (void)requestFinished:(ASIHTTPRequest *)request` is still there when the request finishes? It looks to me like the class gets deallocated too early. Note that the `delegate` property does not retain its content.

You could add a `[self retain]` to `doDownload` and a `[self release]` to `- (void)requestFinished:(ASIHTTPRequest *)request`, but make sure (!) that `[self release]` doesn't get called too often. This is also a possible memory leak if a request would never finish. It would be best to retain your class somewhere else.

You might also try to debug with `NSZombieEnabled` set to `YES` to find the error.

Problem

I'm trying to do an asynchronous request with ASIHTTPRequest, but have some problem getting notified when the request is done. ``` -(void)doDownload{ NSURL *url = [NSURL URLWithString:@"http://www.someurl.com/?"]; ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setPostValue:@"someValue" forKey:@"someField"]; [request setRequestMethod:@"POST"]; [request setDelegate:self]; [request setDidFinishSelector:@selector(requestFinished)]; [request startAsynchronous]; } - (void)requestFinished:(ASIHTTPRequest *)request { // Use when fetching text data NSString *responseString = [request responseString]; } ``` requestFinished is never called. I get an exception in ASIHTTPRequest.m, -handleStreamCompleted: ``` if (fileError) { [self failWithError:fileError]; } else { [self requestFinished]; <----- this call fails } ``` Any clues?

Original source