J'obtiens l'erreur suivante sur iOS 9:
-[UIApplication_handleNonLaunchSpecificActions:
forScene:
withTransitionContext:
completion:] unhandled action ->
<FBSSceneSnapshotAction: 0x150b2aef0>
{
handler = remote;
info = <BSSettings: 0x15333f650>
{
(1) = 5;
};
}
Quelqu'un d'autre a-t-il rencontré cette erreur ou ses implications? Qu'est-ce qui ne va pas?
ios
objective-c
xcode
ios9
Roddy
la source
la source
Réponses:
Il n'y a rien de mal avec votre code. Il s'agit d'un message de journalisation interne à Apple, et vous devez déposer un radar à ce sujet.
Il y a deux indices qui montrent qu'il s'agit probablement du code d'Apple:
Le trait de soulignement précédant le nom de la méthode
_handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
est une convention indiquant que la méthode est privée / interne à la classe dans laquelle elle est déclarée. (Voir ce commentaire .)Il est raisonnable de supposer que le préfixe à deux lettres
FBSSceneSnapshotAction
est un raccourci pour FrontBoard, qui, selon René Ritchie dans " iOS 9 wish-list: Guest Mode" fait partie de toute la famille de logiciels liés au lancement d'applications:Je n'ai aucune idée de ce à quoi sert le
BS
préfixeBSSettings
, mais une analyse de ce message de journal indiquerait que ce n'est rien de ce que vous avez fait, et vous devez déposer un radar avec des étapes pour reproduire le message de journalisation.Si vous voulez essayer de récupérer une trace de pile, vous pouvez implémenter la catégorie liée ici . Certains diront que remplacer l'API privée est une mauvaise idée, mais dans ce cas, une injection temporaire pour récupérer une trace de pile ne peut pas être trop nuisible.
ÉDITER:
Mais, nous voulons toujours savoir ce qu'est cette action. J'ai donc mis un point d'arrêt
-[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]
et commencé à imprimer les valeurs de registre et j'ai trouvé une classe appeléeFBSceneImpl
qui contenait tout un tas d'informations sur mon application:Nous sommes en mesure de savoir quelle méthode privée est appelée ensuite (stockée dans le compteur de programmes, registre 15.)
J'ai essayé de trouver le non géré
FBSceneSnapshotAction
référencé dans le journal, mais pas de dés. Ensuite, j'ai sous-classé UIApplication et j'ai remplacé_handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
. Maintenant, j'ai pu accéder directement à l'action, mais nous ne savons toujours pas ce que c'est.Ensuite, j'ai regardé à nouveau le FBSceneSnapshotAction. Il s'avère qu'il a une superclasse appelée
BSAction
.Ensuite, j'ai écrit un outil similaire à RuntimeBrowser et j'ai recherché toutes les sous-classes de BSAction. Il s'avère qu'il y en a toute une liste:
Les deux noms de méthode que nous avons (un du journal et un du compteur de programme sur les appareils) indiquent que ces actions sont utilisées sous le capot pour transmettre des actions dans le système.
Certaines actions sont probablement envoyées aux rappels du délégué d'application, tandis que d'autres sont gérées en interne.
Ce qui se passe ici, c'est qu'il y a une action qui n'a pas été gérée correctement et le système la note. Nous n'étions pas censés le voir, apparemment.
la source