Estou recebendo o seguinte erro no iOS 9:
-[UIApplication_handleNonLaunchSpecificActions:
forScene:
withTransitionContext:
completion:] unhandled action ->
<FBSSceneSnapshotAction: 0x150b2aef0>
{
handler = remote;
info = <BSSettings: 0x15333f650>
{
(1) = 5;
};
}
Alguém mais se deparou com esse erro ou suas implicações? O que está errado?
ios
objective-c
xcode
ios9
Roddy
fonte
fonte
Respostas:
Não há nada errado com o seu código. Esta é uma mensagem de registro interna da Apple e você deve registrar um radar sobre isso.
Há duas dicas que mostram que esse é provavelmente o código da Apple:
O sublinhado que leva ao nome do método
_handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
é uma convenção que indica que o método é privado / interno para a classe em que está declarado. (Veja este comentário .)É razoável adivinhar que o prefixo de duas letras
FBSSceneSnapshotAction
é uma abreviação de FrontBoard, que, de acordo com Rene Ritchie em "Lista de desejos do iOS 9: Modo Convidado", faz parte de toda a família de softwares relacionados ao lançamento de aplicativos:Não faço ideia para que serve o
BS
prefixoBSSettings
, mas uma análise dessa mensagem de log indicaria que não foi nada que você fez e você deve arquivar um radar com etapas para reproduzir a mensagem de log.Se você quiser tentar pegar um rastreamento de pilha, poderá implementar a categoria vinculada aqui . Alguns argumentam que substituir a API privada é uma péssima idéia, mas nesse caso uma injeção temporária para capturar um rastreamento de pilha não pode ser muito prejudicial.
EDITAR:
Mas ainda queremos saber o que é essa ação. Então, coloquei um ponto de interrupção
-[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]
e comecei a imprimir valores de registro e encontrei uma classe chamadaFBSceneImpl
que tinha um monte de informações sobre meu aplicativo:Podemos descobrir qual método privado é chamado a seguir (armazenado no contador do programa, registro 15.)
Eu tentei encontrar o não tratado
FBSceneSnapshotAction
referenciado no log, mas nenhum dado. Subclassifiquei UIApplication e substituí-o_handleNonLaunchSpecificActions:forScene:withTransitionContext:completion
. Agora eu pude entrar na ação diretamente, mas ainda não sabemos o que é.Então, olhei para o FBSceneSnapshotAction novamente. Acontece que tem uma superclasse chamada
BSAction
.Então, escrevi uma ferramenta semelhante ao RuntimeBrowser e procurei todas as subclasses de BSAction. Acontece que há uma lista completa deles:
Os dois nomes de métodos que temos (um do log e outro do contador de programas nos dispositivos) indicam que essas ações são usadas sob o capô para transmitir ações pelo sistema.
Algumas ações provavelmente são enviadas para os retornos de chamada do delegado do aplicativo, enquanto outras são tratadas internamente.
O que está acontecendo aqui é que existe uma ação que não foi tratada corretamente e o sistema está notando. Aparentemente, não deveríamos vê-lo.
fonte