Como posso definir a variável ambiental CG_CONTEXT_SHOW_BACKTRACE?


90

Eu tenho três botões em minha visão. Depois de definir o cornerRadus no viewDidLoad (): button.layer.cornerRadius = 20Recebo a seguinte mensagem de erro no log:

 <Error>: CGContextSaveGState: invalid context 0x0. 
If you want to see the backtrace, please set 
CG_CONTEXT_SHOW_BACKTRACE environmental variable.

Questões:

  • Como posso definir a variável ambiental CG_CONTEXT_SHOW_BACKTRACE?
  • Ou como posso corrigir esse aviso?

Ok, eu tenho o backtrace agora da mensagem. Não faz sentido para mim. Alguma ajuda por favor ...

Aug  7 14:27:00  <Error>: CGContextSaveGState: invalid context 0x0. Backtrace:
      <-[UIStatusBarItemView updateContentsAndWidth]+33>
       <-[UIStatusBarItemView initWithItem:data:actions:style:]+477>
        <+[UIStatusBarItemView createViewForItem:withData:actions:foregroundStyle:]+134>
         <-[UIStatusBarLayoutManager _createViewForItem:withData:actions:]+163>
          <-[UIStatusBarLayoutManager _prepareEnabledItemType:withEnabledItems:withData:actions:itemAppearing:itemDisappearing:]+36
           <-[UIStatusBarLayoutManager prepareEnabledItems:withData:actions:]+92>
            <-[UIStatusBarForegroundView _setStatusBarData:actions:animated:]+797>
             <-[UIStatusBarForegroundView setStatusBarData:actions:animated:]+332>
              <__51-[UIStatusBar _prepareToSetStyle:animation:forced:]_block_invoke+360>
               <+[UIView(Animation) performWithoutAnimation:]+65>
                <-[UIStatusBar _prepareToSetStyle:animation:forced:]+866>
                 <-[UIStatusBar _requestStyleAttributes:animationParameters:forced:]+391>
                  <-[UIStatusBar requestStyle:animationParameters:forced:]+437>
                   <-[UIStatusBar requestStyle:animated:forced:]+90>
                    <-[UIStatusBar _evaluateServerRegistration]+250>
                     <__45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke+590>
                      <-[UIView(Hierarchy) _postMovedFromSuperview:]+544>
                       <-[UIView(Internal) _addSubview:positioned:relativeTo:]+1967>
                        <-[UIStatusBarWindow setStatusBar:]+288>
                         <-[UIApplication _createStatusBarWithRequestedStyle:orientation:hidden:]+340>
                          <-[UIApplication _runWithMainScene:transitionContext:completion:]+950>
                           <-[UIApplication workspaceDidEndTransaction:]+188>
                            <-[FBSSerialQueue _performNext]+192>
                             <-[FBSSerialQueue _performNextFromRunLoopSource]+45>
                              <__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__+17>
                               <__CFRunLoopDoSources0+556>
                                <__CFRunLoopRun+867>
                                 <CFRunLoopRunSpecific+488>
                                  <-[UIApplication _run]+402>
                                   <UIApplicationMain+171>
                                    <main+117>



Aug  7 14:27:00  <Error>: CGContextTranslateCTM: invalid context 0x0. Backtrace:
      <-[UIStatusBarItemView updateContentsAndWidth]+33>
       <-[UIStatusBarItemView initWithItem:data:actions:style:]+477>
        <+[UIStatusBarItemView createViewForItem:withData:actions:foregroundStyle:]+134>
         <-[UIStatusBarLayoutManager _createViewForItem:withData:actions:]+163>
          <-[UIStatusBarLayoutManager _prepareEnabledItemType:withEnabledItems:withData:actions:itemAppearing:itemDisappearing:]+36
           <-[UIStatusBarLayoutManager prepareEnabledItems:withData:actions:]+92>
            <-[UIStatusBarForegroundView _setStatusBarData:actions:animated:]+797>
             <-[UIStatusBarForegroundView setStatusBarData:actions:animated:]+332>
              <__51-[UIStatusBar _prepareToSetStyle:animation:forced:]_block_invoke+360>
               <+[UIView(Animation) performWithoutAnimation:]+65>
                <-[UIStatusBar _prepareToSetStyle:animation:forced:]+866>
                 <-[UIStatusBar _requestStyleAttributes:animationParameters:forced:]+391>
                  <-[UIStatusBar requestStyle:animationParameters:forced:]+437>
                   <-[UIStatusBar requestStyle:animated:forced:]+90>
                    <-[UIStatusBar _evaluateServerRegistration]+250>
                     <__45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke+590>
                      <-[UIView(Hierarchy) _postMovedFromSuperview:]+544>
                       <-[UIView(Internal) _addSubview:positioned:relativeTo:]+1967>
                        <-[UIStatusBarWindow setStatusBar:]+288>
                         <-[UIApplication _createStatusBarWithRequestedStyle:orientation:hidden:]+340>
                          <-[UIApplication _runWithMainScene:transitionContext:completion:]+950>
                           <-[UIApplication workspaceDidEndTransaction:]+188>
                            <-[FBSSerialQueue _performNext]+192>
                             <-[FBSSerialQueue _performNextFromRunLoopSource]+45>
                              <__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__+17>
                               <__CFRunLoopDoSources0+556>
                                <__CFRunLoopRun+867>
                                 <CFRunLoopRunSpecific+488>
                                  <-[UIApplication _run]+402>
                                   <UIApplicationMain+171>
                                    <main+117>




Aug  7 14:27:00 <Error>: CGContextRestoreGState: invalid context 0x0. Backtrace:
      <-[UIStatusBarItemView updateContentsAndWidth]+33>
       <-[UIStatusBarItemView initWithItem:data:actions:style:]+477>
        <+[UIStatusBarItemView createViewForItem:withData:actions:foregroundStyle:]+134>
         <-[UIStatusBarLayoutManager _createViewForItem:withData:actions:]+163>
          <-[UIStatusBarLayoutManager _prepareEnabledItemType:withEnabledItems:withData:actions:itemAppearing:itemDisappearing:]+36
           <-[UIStatusBarLayoutManager prepareEnabledItems:withData:actions:]+92>
            <-[UIStatusBarForegroundView _setStatusBarData:actions:animated:]+797>
             <-[UIStatusBarForegroundView setStatusBarData:actions:animated:]+332>
              <__51-[UIStatusBar _prepareToSetStyle:animation:forced:]_block_invoke+360>
               <+[UIView(Animation) performWithoutAnimation:]+65>
                <-[UIStatusBar _prepareToSetStyle:animation:forced:]+866>
                 <-[UIStatusBar _requestStyleAttributes:animationParameters:forced:]+391>
                  <-[UIStatusBar requestStyle:animationParameters:forced:]+437>
                   <-[UIStatusBar requestStyle:animated:forced:]+90>
                    <-[UIStatusBar _evaluateServerRegistration]+250>
                     <__45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke+590>
                      <-[UIView(Hierarchy) _postMovedFromSuperview:]+544>
                       <-[UIView(Internal) _addSubview:positioned:relativeTo:]+1967>
                        <-[UIStatusBarWindow setStatusBar:]+288>
                         <-[UIApplication _createStatusBarWithRequestedStyle:orientation:hidden:]+340>
                          <-[UIApplication _runWithMainScene:transitionContext:completion:]+950>
                           <-[UIApplication workspaceDidEndTransaction:]+188>
                            <-[FBSSerialQueue _performNext]+192>
                             <-[FBSSerialQueue _performNextFromRunLoopSource]+45>
                              <__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__+17>
                               <__CFRunLoopDoSources0+556>
                                <__CFRunLoopRun+867>
                                 <CFRunLoopRunSpecific+488>
                                  <-[UIApplication _run]+402>
                                   <UIApplicationMain+171>
                                    <main+117>

4
O título da pergunta e a pergunta (editada) não correspondem. @utogaria deu a você a resposta original correta.
— Aleksa,

Respostas:


81

É um bug no 9b5:
https://forums.developer.apple.com/thread/13683

Arquive um RADAR com a Apple.


30
Este bug ainda existe no Xcode 7.0 (7A220). É facilmente reproduzível criando um novo projeto vazio e definindo UIViewControllerBasedStatusBarAppearance como NO em info.plist.
— Diretoria de

13
No link mencionado acima, uma equipe da Apple respondeu: "Na verdade, a causa raiz das mensagens de erro é um problema com o iOS quando um aplicativo usa alguns tipos de barra de status, como oculto." E "Você pode ignorar este aviso. "
— samthui7,

2
Observo o mesmo problema sob iOS 9.2eXcode 7.2
— Mohamed Saleh

140

Você pode definir uma variável ambiental por meio deste menu: Produto -> Esquema -> Editar Esquema. No item "Executar", localize a guia "Argumentos", você verá "Variáveis ​​ambientais" na guia Adicionar CG_CONTEXT_SHOW_BACKTRACEe definir seu valor como SIM.


1
Obrigado, isso mostra o backtrace total do contexto CG ... Acontece que não tem nada a ver com meus botões .. é o UIStatusBarItemView ..
— l1ghthouse

3
Você poderia tentar verificar seu arquivo xib / storyboard e ver se há alguma imagem de fundo definida para algum UIButton, UIBarButtonItem personalizado, etc. Se a imagem não estiver configurada corretamente (arquivo de imagem ausente, etc), ele também pode gerar avisos como você.
— utogaria de

Verifiquei duas vezes .. todas as imagens estão configuradas corretamente .. elas estão todas nos Assets.xcassets Eu até removi os botões .. mesmo erro continua aparecendo ..
— l1ghthouse

1
Há outra coisa que você pode tentar. No Xcode, vá em "breakpoint navigator" e adicione um "breakpoint de exceção". Execute o aplicativo e veja se ele dispara algum ponto de interrupção de exceção. Nesse caso, você poderá ver mais profundamente o que acontece.
— utogaria de

Se funcionar, é uma boa ideia depurar o erro relacionado às partes da IU.
— Arpit B Parekh

29

Esse problema acontece com o Xcode 7. No meu caso, removi o UIViewControllerBasedStatusBarAppearancede Info.pliste o problema resolvido! Veja a resposta nesta postagem :


sua solução funcionou para mim também, no entanto, e se eu quiser que o UIStatusbar permaneça branco?
— swiftBoy

Eu não consideraria isso um "conserto", pois achei que a maioria das pessoas UIViewControllerBasedStatusBarAppearance
— definia

Sim, eu concordo com você. Encontrei a solução para mudar a cor da barra de status neste link: stackoverflow.com/a/32675066/1095530
— Weles

Não estou trabalhando aqui, e algumas pessoas precisam disso no plist, já que a forma anterior de ocultar a barra de status agora está obsoleta
— thibaut noah

-6

No Xcode 7:

Caso você ainda queira que a barra de status fique oculta, basta alterar UIViewControllerBasedStatusBarAppearanceo Info.plistarquivo para View controller-based status bar appearance. Não se esqueça de configurá-lo porNO


2
Isso não faz sentido; UIViewControllerBaseStatusBarAppearancee View controller-based status bar appearancesão a mesma coisa no Info.plist. Um é o valor-chave e o outro o texto voltado para o usuário.
— esttorhe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.