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:
Com o iOS 8, a Apple refatorou seu gerenciador de sistema, SpringBoard, em vários componentes menores e mais focados. Além do BackBoard, que já foi desenvolvido para lidar com tarefas em segundo plano, eles adicionaram o Frontboard para tarefas em primeiro plano. Eles também adicionaram o PreBoard para lidar com a tela de bloqueio em condições seguras e criptografadas. [...]
Não faço ideia para que serve o BS
prefixo BSSettings
, 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 chamada FBSceneImpl
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.