我遇到了一个非常奇怪的 NSURLConnection 问题。我有一个控制器,它使用以下函数在 viewDidLoad 方法中发出三个异步 GET 请求:
+ (void)connectAsyncWithURL:(NSURL *)url httpMethod:(NSString *)httpMethod delegate:(id <NSURLConnectionDelegate>)delegate timeout:(NSTimeInterval)timeout
{
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:timeout];
[request setHTTPMethod:httpMethod];
[NSURLConnection connectionWithRequest:request delegate:delegate];
}
前两个连接按预期工作。然而,第三个挂起,直到发生超时。失败后重试会导致调用成功。请求的顺序似乎并不重要——总是最后一个调用失败的那个。我拥有正在向其发出请求的服务器,并且观察传入的网络流量向我显示了前两个请求,但在初始超时之前,第三个 NSURLConnection 不会出现第三个请求。更奇怪的是,在超时发生后,如果我离开控制器并再次返回,则在我重新启动应用程序之前,问题不再重现。
有谁知道是什么原因造成的?