“申请”未能及时启动

时间:2013-12-16 19:19:07

标签: ios iphone objective-c nsurlconnection xcode5

我正在处理的应用程序有一种非常奇怪的行为。每当我通过XCode,iTunes或TestFlightApp安装测试版本时,应用程序就会正常启动并运行良好。该  当我手动杀死应用程序并再次启动时出现问题。然后显示启动图像,这是应用程序最远的 - 它只是冻结了一段时间,操作系统在此之后消除了整个过程。崩溃日志包含的信息并非如此有用 - 特定于应用程序的信息:未能及时启动。 组织者中的控制台还记录以下内容:

  • 注意:位置图标现在应处于“非活动”状态
  • 警告:com。无法及时启动
  • 警告:强制MyApp [7956]的崩溃报告......
  • 警告:完成崩溃报告。
  • 注意:(UIKitApplication:com。 [0x6a86])已退出:已杀:9
  • 注意:(UIKitApplication:com。 [0x6a86])限制respawn:Will 从2147483625秒开始
  • 警告:应用程序'UIKitApplication:com。 [0x6a86]'已退出 异常信号9:被杀:9

我已经花了一整天研究这个问题。只是为了澄清 - 任何同步工作或任何大量工作都不会在任何UIApplication委托方法上执行 (applicationDidBecomeActive,didFinishLaunchingWithOptions等)。 我注意到的是,如果在执行期间没有执行任何URL请求,则问题根本不会发生,即应用程序在被杀之前第二次正常运行。 只是提到问题出现在iOS 7下,但该应用程序也支持iOS 5和6。

[NSURLConnection sendAsynchronousRequest:request
                                       queue:[NSOperationQueue currentQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){if (nil == error) {                                
                                   dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
                                      (...)//creating ppError
                                       if (nil == ppError) {
                                           result = parsing(json, &ppError);

                                           if (nil != ppError) {
                                               result = nil;
                                           }
                                       }
                                       dispatch_async(dispatch_get_current_queue(), ^{
                                           if (PPServiceReturnedInvalidTokenErrorCode == ppError.code) {
                                            (...)//do some parsing stuff

                                               [[NSNotificationCenter defaultCenter] postNotificationName:PPRequestManagerUserAuthenticationTokenDidExprireNotification
                                                                                                   object:self
                                                                                                 userInfo:userInfo];
                                           }
                                           completion(result, ppError);
                                       });
                                   });
                               }
                               else {
                                   completion(nil, ppError);
                               }
                           }];

这基本上就是所有请求都是如此,所以我认为一切都是正确的,但事实是,如果我评论这段代码,所描述的问题就会消失。

任何建议和想法将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

最后成功解决了问题 - 问题是建立HTTP连接的第三方框架,虽然没有使用,但仍然是项目的一部分。它正在启动自己的线程并执行一项任务,最终导致崩溃。

总结导致崩溃的原因很棘手,但Xcode 5上的组织者做得很好。我使用了连接设备正在生成的符号化崩溃日志,幸运的是,堆栈跟踪揭示了秘密。

我认为不正确的构建配置是操作系统中的原因或错误。无论如何,谢谢你的帮助!如果那里的人有类似的问题,我也很乐意帮助。