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)
有线索吗?
- (void)requestFinished:(ASIHTTPRequest *)request在请求完成时,您确定实现的类仍然存在吗?在我看来,这个课程得到了太早的解除分配.请注意,该delegate属性不会保留其内容.
您可以添加[self retain]到doDownload和[self release]到- (void)requestFinished:(ASIHTTPRequest *)request,但要确保(!)是[self release]不会被调用过于频繁.如果请求永远不会完成,这也可能是内存泄漏.最好将你的班级留在其他地方.
您也可以尝试使用NSZombieEnabledset 来调试YES以查找错误.
| 归档时间: |
|
| 查看次数: |
5965 次 |
| 最近记录: |