Rod*_*ddy 157 xcode objective-c ios ios9
我在iOS 9上收到以下错误:
-[UIApplication_handleNonLaunchSpecificActions:
forScene:
withTransitionContext:
completion:] unhandled action ->
<FBSSceneSnapshotAction: 0x150b2aef0>
{
handler = remote;
info = <BSSettings: 0x15333f650>
{
(1) = 5;
};
}
Run Code Online (Sandbox Code Playgroud)
有没有其他人遇到这个错误或它的含义?怎么了?
您的代码没有任何问题.这是Apple内部的日志消息,您应该提交有关它的雷达.
有两个提示表明这可能是 Apple的代码:
引导方法名称的下划线_handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
是一种约定,表示该方法是声明它的类的私有/内部.(请参阅此注释.)
可以合理地猜测前两个字母前缀FBSSceneSnapshotAction
是FrontBoard的简写,根据Rene Ritchie的说法," iOS 9愿望清单:访客模式"是与启动应用程序相关的整个软件系列的一部分:
在iOS 8中,Apple将其系统管理器SpringBoard重构为几个更小,更集中的组件.除了已经分离出来处理后台任务的BackBoard之外,他们还为前台任务添加了Frontboard.他们还在安全的加密条件下添加了PreBoard来处理锁定屏幕.[...]
我不知道BS
前缀BSSettings
是什么,但对此日志消息的分析表明它不是你做的任何事情,你应该提交一个雷达,其中包含重现日志消息的步骤.
如果您想尝试获取堆栈跟踪,可以实现链接到此处的类别.有些人认为重写私有API是一个坏主意,但在这种情况下,临时注入以获取堆栈跟踪不会太有害.
编辑:
但是,我们仍然想知道这个动作是什么.所以我放了一个断点-[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]
并开始打印出寄存器值,发现一个叫做FBSceneImpl
有关我的应用程序的大量信息的类:
我们能够找出下一个调用的私有方法(存储在程序计数器中,寄存器15).
我尝试FBSceneSnapshotAction
在日志中找到未处理的引用,但没有骰子.然后,我将UIApplication子类化,并覆盖_handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
.现在我能够直接进行动作,但是,我们仍然不知道它是什么.
然后,我再次查看了FBSceneSnapshotAction.原来它有一个叫做的超类BSAction
.
然后我编写了一个类似于RuntimeBrowser 的工具,并查找了BSAction的所有子类.事实证明,它们有很多列表:
我们拥有的两个方法名称(一个来自日志,一个来自设备上的程序计数器)表明这些操作在引擎盖下用于在系统周围传递操作.
某些操作可能会发送到应用程序委托的回调,而其他操作则在内部处理.
这里发生的事情是有一个未正确处理的动作,系统正在注意它.显然,我们不应该看到它.
归档时间: |
|
查看次数: |
11130 次 |
最近记录: |