场景:
使用ASIHttpRequest,异步请求数据,因为第一次使用,把request卸载了AppDelegae里。
问题:
[self.request startAsynchronous];
调用上面的方法,开始异步请求数据后。代码死在了:
ASIHTTPRequest.m内的
if (delegate && [delegate respondsToSelector:didStartSelector])
处
- (void)requestStarted
{
if ([self error] || [self mainRequest]) {
return;
}
if (delegate && [delegate respondsToSelector:didStartSelector]) {
[delegate performSelector:didStartSelector withObject:self];
}
#if NS_BLOCKS_AVAILABLE
if(startedBlock){
startedBlock();
}
#endif
if (queue && [queue respondsToSelector:@selector(requestStarted:)]) {
[queue performSelector:@selector(requestStarted:) withObject:self];
}
}
并报出了:EXC_BAD_ACCESS的错误。
解决:
查了很多资料,原来是异步请求后,放在AppDelegate里的ASIHttpRequest request的生命周期结束,并且被ARC释放了内存,导致请求时,无法回调delegate。