请求完成时ASIHTTPRequest,EXC_BAD_ACCESS

Veg*_*gar 3 iphone delegates objective-c selector asihttprequest

我正在尝试使用ASIHTTPRequest执行异步请求,但在请求完成时收到通知时会遇到一些问题.

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

}
Run Code Online (Sandbox Code Playgroud)

requestFinished永远不会被调用.我在ASIHTTPRequest.m,-handleStreamCompleted中得到一个异常:

if (fileError) {
    [self failWithError:fileError];
} else {
    [self requestFinished];   <----- this call fails
}
Run Code Online (Sandbox Code Playgroud)

有线索吗?

MrM*_*age 7

- (void)requestFinished:(ASIHTTPRequest *)request在请求完成时,您确定实现的类仍然存在吗?在我看来,这个课程得到了太早的解除分配.请注意,该delegate属性不会保留其内容.

您可以添加[self retain]doDownload[self release]- (void)requestFinished:(ASIHTTPRequest *)request,但要确保(!)是[self release]不会被调用过于频繁.如果请求永远不会完成,这也可能是内存泄漏.最好将你的班级留在其他地方.

您也可以尝试使用NSZombieEnabledset 来调试YES以查找错误.