CG_CONTEXT_SHOW_BACKTRACE 환경 변수를 어떻게 설정할 수 있습니까?


90

내 뷰에는 세 개의 버튼이 있습니다. viewDidLoad ()에서 cornerRadus를 설정 한 후 : button.layer.cornerRadius = 20로그에 다음 오류 메시지가 표시됩니다.

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

질문 :

  • CG_CONTEXT_SHOW_BACKTRACE 환경 변수를 어떻게 설정할 수 있습니까?
  • 또는이 경고를 어떻게 수정할 수 있습니까?

좋아요, 지금 메시지에서 역 추적을 받았습니다. 나에게는 말이되지 않습니다. 좀 도와주세요 ...

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
질문의 제목과 (수정 된) 질문 불일치. @utogaria가 원래 정답을 제공했습니다.
Aleksa 2015 년

답변:


81

9b5의 버그 :
https://forums.developer.apple.com/thread/13683

Apple에 RADAR을 제출하십시오.


30
이 버그는 Xcode 7.0 (7A220)에 여전히 존재합니다. 새로운 빈 프로젝트를 만들고 info.plist에서 UIViewControllerBasedStatusBarAppearance를 NO로 설정하여 쉽게 재현 할 수 있습니다.
보드

13
위에 언급 된 링크에서 Apple 직원은 방금 "실제로 앱이 숨김과 같은 일부 상태 표시 줄 유형을 사용할 때 오류 메시지의 근본 원인은 iOS 문제입니다."및 "이 경고를 무시할 수 있습니다. "
samthui7 2015 년

2
저도 같은 문제에서 관찰 iOS 9.2Xcode 7.2
모하메드 살레

140

이 메뉴를 통해 환경 변수를 설정할 수 있습니다 : 제품-> 구성표-> 구성표 편집. "실행"항목에서 "인수"탭을 찾으면 탭에 "환경 변수"가 표시되고 추가 CG_CONTEXT_SHOW_BACKTRACE하고 해당 값을 YES로 설정합니다.


1
덕분에이 쇼 CG 컨텍스트의 총 역 추적은 ... 알고 보니, 그것이 있습니다 .. UIStatusBarItemView입니다 .. 내 버튼으로 아무것도 할 일이있다
l1ghthouse

3
xib / storyboard 파일을 다시 확인하고 사용자 정의 된 UIButton, UIBarButtonItem 등에 대해 설정된 배경 이미지가 있는지 확인하십시오. 이미지가 올바르게 설정되지 않은 경우 (이미지 파일 누락 등) 생성 될 수도 있습니다. 당신과 같은 경고.
utogaria

더블 모든 이미지는 ... 그들은 심지어 버튼을 제거 Assets.xcassets에 모든 .. 같은 오류가 계속 나타나는 있습니다 .. 제대로 설정입니다 .. 확인
l1ghthouse

1
시도해 볼 수있는 또 다른 방법이 있습니다. Xcode에서 "breakpoint navigator"로 이동하여 "Exception breakpoint"를 추가합니다. 앱을 실행하고 예외 중단 점을 트리거하는지 확인합니다. 그렇다면 어떤 일이 발생하는지 더 자세히 볼 수 있습니다.
utogaria

작동한다면 UI 부분과 관련된 오류를 디버깅 할 때 매우 좋은 생각입니다.
Arpit B Parekh

29

이 문제는 Xcode 7에서 발생합니다. 제 경우에는 UIViewControllerBasedStatusBarAppearance에서 제거 Info.plist하고 문제가 해결되었습니다! 이 게시물 의 답변을 참조하십시오 .


귀하의 솔루션이 저에게도 효과가 있었지만 UIStatusbar를 흰색으로 유지하려면 어떻게해야합니까?
swiftBoy

나는 그것이 UIViewControllerBasedStatusBarAppearance필요하기 때문에 설정 한 대부분의 사람들을 생각 했기 때문에 그것이 "수정"이라고 생각 하지 않을 것입니다. 그러나이 대답은 19 개의
찬성표를

그래 나도 너와 같은 생각이야. 이 링크에서 상태 표시 줄의 색상을 변경하는 솔루션을 찾았습니다. stackoverflow.com/a/32675066/1095530
Weles

여기서 작업하지 않고 일부 사람들은 상태 표시 줄을 숨기는 이전 방법이 더 이상 사용되지 않기 때문에 plist에서이 기능이 필요합니다
thibaut noah

-6

Xcode 7 :

여전히 상태 표시 줄을 숨기 UIViewControllerBasedStatusBarAppearance려면 Info.plist파일을 View controller-based status bar appearance. 설정하는 것을 잊지 마세요NO


2
이것은 말이되지 않습니다. UIViewControllerBaseStatusBarAppearance그리고 View controller-based status bar appearance온 같은 일이다 Info.plist. 하나는 키 값이고 다른 하나는 사용자가 텍스트를 향하는 것입니다.
esttorhe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.