gpt4 book ai didi

objective-c - 应用程序被 iOS 杀死后,NSURLConnection sendSynchronousRequest/sendAsynchronousRequest 失败

转载 作者:技术小花猫 更新时间:2023-10-29 11:22:36 26 4
gpt4 key购买 nike

我的应用程序中的所有服务器连接都以相同的方式进行:

  • dispatch_async 到第二个线程。
  • 发送同步请求
  • 主线程上的失败/成功 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); });
    });

好吧,该应用程序运行良好!我可以将它用于数千个服务器连接,并且当我运行应用程序的新负载时它始终有效。当发生以下情况时,问题开始:

  1. 将应用发送给 BG。
  2. 等一下...
  3. 应用程序被 iOS 杀死。
  4. 再次打开,iOS 从头开始​​加载整个应用程序。(请参阅启动画面,然后是第一个屏幕,而不是我留给 BG 的那个……)

在那种情况下我得到 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com