An Ihrem Code ist nichts auszusetzen. Dies ist eine Apple-interne Protokollierungsnachricht, und Sie sollten ein Radar darüber einreichen.
Es gibt zwei Hinweise, die zeigen, dass dies wahrscheinlich Apples Code ist:
Der Unterstrich vor dem Methodennamen _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
ist eine Konvention, die angibt, dass die Methode privat / intern für die Klasse ist, in der sie deklariert ist. (Siehe diesen Kommentar .)
Es ist zu vermuten, dass das Präfix aus zwei Buchstaben FBSSceneSnapshotAction
eine Abkürzung für FrontBoard ist, das laut Rene Ritchie in der " iOS 9-Wunschliste: Gastmodus " Teil der gesamten Softwarefamilie zum Starten von Apps ist:
Mit iOS 8 hat Apple seinen Systemmanager SpringBoard in mehrere kleinere, fokussiertere Komponenten umgestaltet. Zusätzlich zu BackBoard, das bereits für Hintergrundaufgaben ausgegliedert wurde, wurde Frontboard für Vordergrundaufgaben hinzugefügt. Sie haben auch PreBoard hinzugefügt, um den Sperrbildschirm unter sicheren, verschlüsselten Bedingungen zu verwalten. [...]
Ich habe keine Ahnung, wofür das BS
Präfix BSSettings
ist, aber
BS
ist eine Abkürzung für BackBoard Settings
, und eine Analyse dieser Protokollnachricht würde anzeigen, dass Sie nichts getan haben, und Sie sollten ein Radar mit Schritten zum Reproduzieren der Protokollierungsnachricht einreichen.
Wenn Sie versuchen möchten, eine Stapelverfolgung abzurufen, können Sie die hier verknüpfte Kategorie implementieren . Einige würden argumentieren, dass das Überschreiben der privaten API eine schlechte Idee ist, aber in diesem Fall kann eine temporäre Injektion zum Abrufen eines Stack-Trace nicht zu schädlich sein.
BEARBEITEN:
Aber wir wollen immer noch wissen, was diese Aktion ist. Also setzte ich einen Haltepunkt auf -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]
und begann, Registerwerte auszudrucken. Ich fand eine Klasse namens, FBSceneImpl
die eine ganze Reihe von Informationen über meine Anwendung enthielt:
Wir können herausfinden, welche private Methode als nächstes aufgerufen wird (gespeichert im Programmzähler, Befehlszeiger, Register 15.)
Ich habe versucht, die nicht behandelten FBSceneSnapshotAction
Punkte im Protokoll zu finden, aber keine Würfel. Dann habe ich UIApplication untergeordnet und überschrieben _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
. Jetzt konnte ich direkt an der Aktion teilnehmen, aber wir wissen immer noch nicht, was es ist.
Dann habe ich mir noch einmal die FBSceneSnapshotAction angesehen. Es stellt sich heraus, dass es eine Superklasse namens gibt BSAction
.
Dann habe ich ein Tool geschrieben , das RuntimeBrowser ähnelt, und alle Unterklassen von BSAction nachgeschlagen. Es stellt sich heraus, dass es eine ganze Liste von ihnen gibt:
Die beiden Methodennamen (einer aus dem Protokoll und einer aus dem Programmzähler auf den Geräten) zeigen an, dass diese Aktionen unter der Haube zum Weiterleiten von Aktionen im System verwendet werden.
Einige Aktionen werden wahrscheinlich an die Rückrufe des App-Delegaten gesendet, während andere intern ausgeführt werden.
Was hier passiert ist, dass es eine Aktion gibt, die nicht richtig gehandhabt wurde und das System bemerkt. Wir sollten es anscheinend nicht sehen.