No hay nada malo con tu código. Este es un mensaje de registro interno de Apple, y debe archivar un radar al respecto.
Hay dos pistas que muestran que este es probablemente el código de Apple:
El guión bajo del nombre del método _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
es una convención que indica que el método es privado / interno para la clase en la que se declara. (Vea este comentario ).
Es razonable suponer que el prefijo de dos letras FBSSceneSnapshotAction
es una abreviatura de FrontBoard, que según Rene Ritchie en " Lista de deseos de iOS 9: Modo de invitado" es parte de toda la familia de software relacionado con el lanzamiento de aplicaciones:
Con iOS 8, Apple refactorizó su administrador de sistema, SpringBoard, en varios componentes más pequeños y más enfocados. Además de BackBoard, que ya se separó para manejar tareas en segundo plano, agregaron Frontboard para tareas en primer plano. También agregaron PreBoard para manejar la pantalla de bloqueo en condiciones seguras y encriptadas. [...]
No tengo idea de para qué sirve el BS
prefijo BSSettings
, pero un análisis de este mensaje de registro indicaría que no es algo que hiciste, y debes archivar un radar con pasos para reproducir el mensaje de registro.
Si desea probar y obtener un seguimiento de la pila, puede implementar la categoría vinculada aquí . Algunos argumentarían que anular la API privada es una mala idea, pero en este caso una inyección temporal para obtener un seguimiento de la pila no puede ser demasiado dañino.
EDITAR:
Pero, todavía queremos saber qué es esta acción. Así que puse un punto de interrupción -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]
y comencé a imprimir valores de registro y encontré una clase llamada FBSceneImpl
que tenía mucha información sobre mi aplicación:
Podemos averiguar qué método privado se llama a continuación (almacenado en el contador del programa, registro 15.)
Traté de encontrar el no manejado FBSceneSnapshotAction
referenciado en el registro, pero no dados. Luego, subclasifiqué la aplicación UIA y la anulé _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
. Ahora pude llegar a la acción directamente, pero aún así, no sabemos qué es.
Luego, volví a mirar la FBSceneSnapshotAction. Resulta que tiene una superclase llamada BSAction
.
Luego escribí una herramienta similar a RuntimeBrowser y busqué todas las subclases de BSAction. Resulta que hay una gran lista de ellos:
Los dos nombres de métodos que tenemos (uno del registro y otro del contador del programa en los dispositivos) indican que estas acciones se utilizan debajo del capó para pasar acciones por el sistema.
Algunas acciones probablemente se envían a las devoluciones de llamada del delegado de la aplicación, mientras que otras se manejan internamente.
Lo que sucede aquí es que hay una acción que no se manejó correctamente y el sistema lo está notando. No se suponía que lo viéramos, al parecer.