0

我一直在研究这个问题一段时间,似乎无法在谷歌和 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];

}

但我仍然收到超时错误。

4

0 回答 0