エラー:iOS9の_handleNonLaunchSpecificActions


157

iOS 9で次のエラーが発生します。

    -[UIApplication_handleNonLaunchSpecificActions:
      forScene:
      withTransitionContext:
      completion:] unhandled action -> 
      <FBSSceneSnapshotAction: 0x150b2aef0> 
       {
            handler          = remote;
            info = <BSSettings: 0x15333f650> 
            {
                (1) = 5;
            };
        }

他の誰かがこのエラーに遭遇しましたか、それが意味しますか?なにが問題ですか?


6
まだiOS9ポストベータリリースです。問題が何であり、その影響を理解することは良いことでしょう。
Roddy、

11
アプリの実行中にiPhoneをロックすると、同じ問題が発生します。iOS 9.0、XCode 7.0。
NKorotkov

5
Xcode 7で作成された新しいプロジェクトにもこの問題があるため、これはAppleのバグのようです。
Hongfei

12
Apple開発者フォーラムで議論されたメリットはありますか?どんな種類のバグも「Appleが望まないのに、なぜそうしたいのか」で締めくくられているようです。問題を解決しようとするとき、絶望の最後のストップです。
Roddy、

11
質問stackoverflow.com/questions/32658037/…を参照してください-これは同じ問題について説明しています。
iPhone Guy

回答:


10

コードに問題はありません。これはApple内部のログメッセージであり、レーダーについて報告する必要があります。

これがおそらく Appleのコードであることを示す2つのヒントがあります。

  1. メソッド名の先頭にある下線_handleNonLaunchSpecificActions:forScene:withTransitionContext:completionは、メソッドが宣言されているクラスに対してプライベート/内部であることを示す規則です(このコメントを参照してください)。

  2. の2文字のプレフィックスFBSSceneSnapshotActionはFrontBoardの省略形であると推測するのは妥当です。「iOS 9ウィッシュリスト:ゲストモード」の Rene Ritchieによると、これはアプリの起動に関連するソフトウェアファミリ全体の一部です。

iOS 8では、AppleはシステムマネージャーであるSpringBoardをいくつかのより小さく、より焦点を絞ったコンポーネントにリファクタリングしました。バックグラウンドタスクを処理するために既にスピンオフされていたバックボードに加えて、フォアグラウンドタスク用にフロントボードを追加しました。また、PreBoardを追加して、安全で暗号化された条件下でロック画面を処理しました。[...]

私は何は考えていないBSでプレフィックスがBSSettingsためですが、このログメッセージの分析は、それはあなたがやった何もないことを示すことになる、とあなたは、ロギングメッセージを再現するための手順で、レーダーを提出する必要があります。

スタックトレースを取得したい場合は、ここにリンクされているカテゴリを実装できます。プライベートAPIをオーバーライドすることは悪い考えであると主張する人もいますが、この場合、スタックトレースを取得するための一時的な注入はあまり害を及ぼすことはありません。

編集:

しかし、それでもこのアクションが何であるかを知りたいのです。そこで、ブレークポイントを設定し-[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]てレジスタ値の出力を開始したFBSceneImplところ、アプリケーションに関する大量の情報を含むというクラスが見つかりました。

シーン

次に呼び出されるプライベートメソッドを見つけることができます(プログラムカウンターのレジスター15に格納されています)。

プログラムカウンター

FBSceneSnapshotActionログで未処理の参照を見つけようとしましたが、ダイスはありませんでした。次に、UIApplicationをサブクラス化し、オーバーライドしました_handleNonLaunchSpecificActions:forScene:withTransitionContext:completion。今、私は直接行動に出ることができましたが、それでも、それが何であるかはわかりません。

次に、FBSceneSnapshotActionをもう一度見ました。と呼ばれるスーパークラスがあることがわかりましたBSAction

次に、RuntimeBrowserにたツール作成しBSActionのすべてのサブクラスを調べました。それらのかなりのリストがあることがわかります:

アクションリスト

私たちが持っている2つのメソッド名(1つはログから、もう1つはデバイスのプログラムカウンターから)は、これらのアクションがシステム内でアクションを渡すために内部で使用されていることを示しています。

一部のアクションはおそらくアプリデリゲートのコールバックに送信されますが、その他のアクションは内部で処理されます。

ここで起こっているのは、正しく処理されなかったアクションがあり、システムがそれを認識しているということです。どうやら私たちはそれを見るはずではなかったようです。


申し訳ありませんが、これは実際には答えではありません。次のコメントの詳細。コードはAppleの内部エラーです。これは問題ではありません。推測は実際には解決策ではなく、提供されたiOS8の説明は関係ありません。エラーはiOS9でのみ発生したためです(これはiOS8では発生しません)。
Roddy

2
「何が悪いのか」に対する答えは、SpringBoardの内部の何かがスナップショットアクションを処理していないことです。これがロギングメッセージの内容です。アップル社外の誰かがあなたに言うことができる他にほとんどありません。
Moshe

このログメッセージがiOS 8に表示されなかったという事実は、実際には関係ありません。これは、レーダーを使用して提出する必要のある迷惑なログメッセージです。
Moshe

私は今朝、誰かが私の質問を更新したことに気づきました。それは私が最初に尋ねたものではありませんでした。質問が他の誰かによって更新される可能性があることさえ知らなかった。
Roddy

元の質問に答えるには、レーダーを提出する以外に影響はありません。
Moshe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.