iphone - ASIHTTPRequest,EXC_BAD_ACCESS 当请求完成时

标签 iphone objective-c delegates 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];

}

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

if (fileError) {
    [self failWithError:fileError];
} else {
    [self requestFinished];   <----- this call fails
}

有什么线索吗?

最佳答案

你确定你的实现- (void)requestFinished:(ASIHTTPRequest *)request 的类在请求完成时仍然存在吗?在我看来,这个类(class)太早被释放了。请注意,delegate 属性不会保留其内容。

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

您也可以尝试将 NSZombieEnabled 设置为 YES 进行调试以查找错误。

关于iphone - ASIHTTPRequest,EXC_BAD_ACCESS 当请求完成时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2164948/

相关文章:

c# - Task.Run 与 Invoke() 区别

swift - 委托(delegate) - 从不同的 View Controller 更改变量

c# - 多态委托(delegate)

iphone - 将字典值写入 iOS 文件时出现无法识别的选择器错误

iphone - 在 iPhone safari 上运行本地创建的文件

ios - 我不断收到有关我的 iOS 项目的 .png 文件的多个构建命令的警告

objective-c - 无法使用 ffmpeg 对图像进行编码

iphone - 在后台模仿按下网页上的按钮,以触发操作

iphone - 如何从 iPhone 中的 .DBF 文件中获取数据

ios - 如何将委托(delegate)设置为 QLPreviewController 的 UIActivityViewController?