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