我的应用程序中的所有服务器连接都以相同的方式进行:
主线程上的失败/成功 block 。
以下不是完整代码,只是概念:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL *url = [NSURL URLWithString:@"someURL"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSURLResponse *response = nil;
NSError *error;
NSData *data = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];
if (error)
{
dispatch_async(dispatch_get_main_queue(), ^{ _failureBlock(error); });
}
else
{
dispatch_async(dispatch_get_main_queue(), ^{ _successBlock(data); });
});
好吧,该应用程序运行良好!我可以将它用于数千个服务器连接,并且当我运行应用程序的新负载时它始终有效。 当发生以下情况时,问题开始:
在那种情况下我得到 NSURLConnectionErrors!!各种各样的!代码 1003、代码 1009、代码 9……随便说吧! 我在应用程序加载时立即开始的所有 服务器连接出现错误。之后的任何其他连接都可以正常工作!包括刷新失败的!
这几乎感觉就像我试图太快或太早到达我的服务器,但是我确实在启动连接之前检查并通过了可达性测试。
在这里真的需要一些帮助。 提前致谢。
更新:如下所示,尝试使用 sendAsynchronousRequest - 给了我完全相同的行为。 (错误:这次是 1001)。
最佳答案
好的,知道了! appDelegate 构建了 tabBar,它加载了所有发送了一些 NSURLConnections 的 viewControllers... 所以对于 iOS 来说,等待响应的时间太长了,但都失败了! (不知道第一次启动是否正常,只有在应用程序终止后才不会)
无论如何,我更改了所有服务器负载以使用延迟为 0.1 的选择器执行。这样 appDelegate 就可以完成运行,一切都很好! :)
关于objective-c - 应用程序被 iOS 杀死后,NSURLConnection sendSynchronousRequest/sendAsynchronousRequest 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14015751/