我一直在研究这个问题一段时间,似乎无法在谷歌和 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];
}
但我仍然收到超时错误。