gpt4 book ai didi

iphone - 当我使用 ASIHTTPRequest 取消异步 Web 请求时,出现 EXC_BAD_ACCESS

转载 作者:行者123 更新时间:2023-12-03 20:21:35 26 4
gpt4 key购买 nike

我在 iPhone 模拟器中运行下面的示例代码没有问题,但是当我在 iPhone 中运行它时,当我调用 [asiRequest cancel] 时,我总是得到 EXC_BAD_ACCESS。任何人都可以帮忙吗?谢谢。

ASIHTTPRequest *asiRequest;

-(IBAction)request1{
NSLog(@"request starting");
[self sendRequest];
}
-(IBAction)cancel1{
NSLog(@"request caceling");
if(asiRequest)
[asiRequest cancel];

}

-(void)sendRequest{
asiRequest=[ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://maps.google.com/"]];
[asiRequest setDelegate:self];
[asiRequest startAsynchronous];
}

- (void)requestFinished:(ASIHTTPRequest *)request
{
NSLog(@"requestFinished");
asiRequest=nil;
}

- (void)requestFailed:(ASIHTTPRequest *)request
{
NSLog(@"request Error=%@",[request error]);
asiRequest=nil;
}
<小时/>

检查完api后,我认为我不应该在requestFinished或requestFailed中释放它

完成后如何释放它?

- (void)cancel
{
#if DEBUG_REQUEST_STATUS
NSLog(@"Request cancelled: %@",self);
#endif
[[self cancelledLock] lock];

if ([self isCancelled] || [self complete]) {
[[self cancelledLock] unlock];
return;
}

[self failWithError:ASIRequestCancelledError];
[self setComplete:YES];
[self cancelLoad];
[[self cancelledLock] unlock];

// Must tell the operation to cancel after we unlock, as this request might be dealloced and then NSLock will log an error
[super cancel];
}

最佳答案

您需要保留您的 ASIHTTPRequest。由于请求是通过使用便捷构造函数自动释放的,因此您必须保留它,以便它在当前运行循环结束时保留下来。

此外,请注意,您不需要在 cancel1: 中检查 asiRequest 是否不为 nil:发送消息至nil 什么都不做,也没有副作用。

关于iphone - 当我使用 ASIHTTPRequest 取消异步 Web 请求时,出现 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2129494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com