Recibo el siguiente error en iOS 9:
-[UIApplication_handleNonLaunchSpecificActions:
forScene:
withTransitionContext:
completion:] unhandled action ->
<FBSSceneSnapshotAction: 0x150b2aef0>
{
handler = remote;
info = <BSSettings: 0x15333f650>
{
(1) = 5;
};
}
¿Alguien más ha encontrado este error o sus implicaciones? ¿Qué está mal?
ios
objective-c
xcode
ios9
Roddy
fuente
fuente
Respuestas:
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:No tengo idea de para qué sirve el
BS
prefijoBSSettings
, 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 llamadaFBSceneImpl
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.
fuente