ios NSURLConnection随机返回超时错误

ios NSURLConnection随机返回超时错误,ios,xcode,Ios,Xcode,我研究这个问题已经有一段时间了,似乎在谷歌和ios文档中都找不到解决方案 我的应用程序发送3个异步请求。前两个从主线程调用,最后一个从另一个线程调用,顺序如下。它们被一个接一个地发送,但它们之间的延迟相对较小 //build the request url NSURL *defaultResultsURL = [self getDefaultResultsURL]; //create the request NSMutableURLRequest *request = [NSMuta

我研究这个问题已经有一段时间了,似乎在谷歌和ios文档中都找不到解决方案

我的应用程序发送3个异步请求。前两个从主线程调用,最后一个从另一个线程调用,顺序如下。它们被一个接一个地发送,但它们之间的延迟相对较小

//build the request url
NSURL *defaultResultsURL = [self getDefaultResultsURL];

//create the request
NSMutableURLRequest *request = 
    [NSMutableURLRequest requestWithURL:defaultResultsURL
        cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
        timeoutInterval:MAX_TIMEOUT_BACKEND];

//invoke requestAllDefaultResults for all elements - invoke on main thread
defualtsResponse = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
[defualtsResponse scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[defualtsResponse start];
问题是,有时,并非所有时间,而且仅在我正在测试的一款iPhone上,并且只有在应用程序首次安装时,第一个请求返回超时错误,时间不到5秒,即指定的请求超时

我已经检查了后端服务器,我看到所有三个请求都被接收,响应都被发回

在使用发送请求之前,我尝试检查当前线程是否正在运行

if([NSThread isMainThread]){
  defualtsResponse = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}


但我仍然收到超时错误。

您的主线程似乎冻结了一段时间。这导致第一个反应不能在5秒内到达,为什么会冻结?我正在记录每个请求和超时错误,根据时间戳,超时错误发生在5秒之前。我的应用程序执行数百个请求,我从来没有遇到过这个问题。如果你将超时设置为5秒以上会怎么样?我从3秒的超时开始,每次遇到这个错误都不断增加超时。正如我所说,在5秒钟过去之前调用了错误。。现在,我使用阻塞队列来确保请求按顺序发送,并且它似乎可以工作