错误:_handlenonLaunchSpecifications在iOS9中

错误:_handlenonLaunchSpecifications在iOS9中,ios,objective-c,xcode,ios9,Ios,Objective C,Xcode,Ios9,我在iOS 9上遇到以下错误: -[UIApplication_handleNonLaunchSpecificActions: forScene: withTransitionContext: completion:] unhandled action -> <FBSSceneSnapshotAction: 0x150b2aef0> { handler = rem

我在iOS 9上遇到以下错误:

    -[UIApplication_handleNonLaunchSpecificActions:
      forScene:
      withTransitionContext:
      completion:] unhandled action -> 
      <FBSSceneSnapshotAction: 0x150b2aef0> 
       {
            handler          = remote;
            info = <BSSettings: 0x15333f650> 
            {
                (1) = 5;
            };
        }
-[UIApplication\u HandlenonLaunchs规范:
forScene:
withTransitionContext:
完成:]未处理的操作->
{
处理器=远程;
信息=
{
(1) = 5;
};
}

还有其他人遇到过这个错误或它的影响吗?怎么了?

您的代码没有问题。这是苹果内部的一条日志信息,你应该提交一份雷达文件

有两个提示表明这可能是苹果的代码:

  • 方法名
    \u handleNonLaunchSpecifications:forScene:withTransitionContext:completion
    前面的下划线是一种约定,表示该方法对于声明它的类是私有的/内部的。(见附件。)

  • 有理由猜测,
    FBSSceneSnapshotAction
    中的两个字母前缀是FrontBoard的缩写,根据Rene Ritchie的说法,FrontBoard“是与发布应用程序相关的整个软件系列的一部分:

  • 通过iOS 8,苹果将其系统管理器SpringBoard重构为几个更小、更专注的组件。除了BackBoard(已经分离出来处理后台任务)之外,他们还为前台任务添加了Frontboard。他们还添加了PreBoard,以在安全、加密的条件下处理锁屏。[…]

    我不知道
    BSSettings
    中的
    BS
    前缀是用来做什么的,但对该日志消息的分析表明,这与您所做的无关,您应该提交一个雷达,其中包含重现日志消息的步骤

    如果您想尝试获取堆栈跟踪,您可以实现。有些人会认为覆盖私有API是个坏主意,但在这种情况下,临时注入以获取堆栈跟踪不会太有害

    编辑:

    但是,我们仍然想知道这个操作是什么。因此,我在
    -[UIApplication\u HandlenonLaunchSpecifications:forScene:withTransitionContext:completion]
    上设置了一个断点,并开始打印寄存器值,找到了一个名为
    FBSceneImpl
    的类,该类包含了有关我的应用程序的全部信息:

    我们能够找出下一步调用哪个私有方法(存储在程序计数器、寄存器15中)

    我试图找到日志中引用的未处理的
    FBSceneSnapshotAction
    ,但没有骰子。然后,我将UIApplication子类化,并覆盖了
    \u handleNonLaunchSpecifications:forScene:withTransitionContext:completion
    。现在我可以直接获得该操作,但我们仍然不知道它是什么

    然后,我又看了一遍FBSceneSnapshotAction,发现它有一个名为
    BSAction
    的超类

    然后我写了类似的,并查找了BSAction的所有子类。结果发现有很多子类:

    我们拥有的两个方法名称(一个来自日志,一个来自设备上的程序计数器)表明,这些操作在后台用于在系统中传递操作

    一些操作可能会发送到应用程序代理的回调,而其他操作则在内部处理


    这里发生的事情是,有一个操作没有正确处理,系统正在注意到它。显然,我们不应该看到它。

    仍在iOS9测试后版本中。最好了解问题是什么以及它的影响。当我的应用程序运行时锁定iPhone时,我也有同样的问题。iOS 9.0,XCode 7.0。这似乎确实是一个苹果的错误,因为一个用Xcode 7创建的全新项目也有这个问题。在苹果开发者论坛上讨论过任何有价值的东西吗?似乎任何类型的错误都会以“如果苹果不想让你这么做,你为什么要这么做?”?“在寻求解决问题时,这是绝望的最后一站。请参阅问题-这讨论了相同的问题。抱歉,这不是真正的答案;更多的是下面的评论。代码很大程度上是苹果的内部错误,这是没有问题的。猜测并不是真正的解决方案,提供的iOS8解释也不相关,因为错误只出现在iOS9中(这在iOS8中不会发生)。对“什么是错误的”的回答是SpringBoard内部的某些东西没有处理快照操作。日志信息就是这么说的。除了苹果之外,几乎没有其他人能告诉你。不过,这条日志信息没有出现在iOS 8上这一事实并不重要。这是一条应该在雷达上存档的日志信息。今天早上我注意到有人更新了我的问题,而这不是我最初问的,这就是为什么有点脱节的原因。我甚至不知道一个问题有可能被其他人更新。回答你原来的问题:除了请提交一份雷达文件外,没有其他含义。