コードに問題はありません。これはApple内部のログメッセージであり、レーダーについて報告する必要があります。
これがおそらく Appleのコードであることを示す2つのヒントがあります。
メソッド名の先頭にある下線_handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
は、メソッドが宣言されているクラスに対してプライベート/内部であることを示す規則です(このコメントを参照してください)。
の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つはデバイスのプログラムカウンターから)は、これらのアクションがシステム内でアクションを渡すために内部で使用されていることを示しています。
一部のアクションはおそらくアプリデリゲートのコールバックに送信されますが、その他のアクションは内部で処理されます。
ここで起こっているのは、正しく処理されなかったアクションがあり、システムがそれを認識しているということです。どうやら私たちはそれを見るはずではなかったようです。