Làm cách nào để đặt biến môi trường CG_CONTEXT_SHOW_BACKTRACE?


90

Tôi có ba nút trong chế độ xem của tôi. Sau khi thiết lập angleRadus trong viewDidLoad (): button.layer.cornerRadius = 20Tôi nhận được thông báo lỗi sau trong nhật ký:

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

Câu hỏi:

  • Làm cách nào để đặt biến môi trường CG_CONTEXT_SHOW_BACKTRACE?
  • Hoặc làm cách nào để khắc phục cảnh báo này?

Được rồi, tôi đã nhận được hậu quả từ tin nhắn. Nó không có ý nghĩa gì đối với tôi. Xin giúp đỡ một số ...

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
Tiêu đề của câu hỏi và câu hỏi (đã chỉnh sửa) không khớp. @utogaria đã cho bạn câu trả lời chính xác ban đầu.
Aleksa

Câu trả lời:


81

Đó là một lỗi trong 9b5:
https://forums.developer.apple.com/thread/13683

Gửi RADAR với Apple.


30
Lỗi này vẫn tồn tại trong Xcode 7.0 (7A220). Nó có thể dễ dàng tái tạo bằng cách tạo một dự án trống mới và đặt UIViewControllerBasedStatusBarAppearance thành NO trong info.plist.
Hội đồng quản trị

13
Trong liên kết được đề cập ở trên, một nhân viên của Apple vừa trả lời: "Thật vậy, nguyên nhân sâu xa của các thông báo lỗi là do iOS gặp sự cố khi một ứng dụng sử dụng một số loại thanh trạng thái, chẳng hạn như ẩn", và "Bạn có thể bỏ qua cảnh báo này. "
samthui7

2
Tôi quan sát dưới cùng một vấn đề iOS 9.2Xcode 7.2
Mohamed Saleh

140

Bạn có thể đặt một biến môi trường qua menu này: Sản phẩm -> Lược đồ -> Chỉnh sửa Lược đồ. Dưới mục "Chạy", tìm tab "Đối số", bạn sẽ thấy "Biến môi trường" trong tab, Thêm CG_CONTEXT_SHOW_BACKTRACEvà đặt giá trị của nó thành CÓ.


1
Nhờ chương trình này tổng backtrace của CG Bối cảnh ... Hóa ra, nó không có gì cần làm với các nút của tôi .. đó là UIStatusBarItemView ..
l1ghthouse

3
Bạn có thể thử kiểm tra lại tệp xib / storyboard của mình và xem liệu có bất kỳ hình nền nào được đặt cho bất kỳ UIButton, UIBarButtonItem tùy chỉnh nào, v.v. Nếu hình ảnh không được đặt chính xác (thiếu tệp hình ảnh, v.v.), nó cũng có thể tạo cảnh báo như bạn có.
utogaria

Hai lần kiểm tra .. tất cả hình ảnh được thiết lập một cách chính xác .. họ là tất cả trong Assets.xcassets Tôi thậm chí loại bỏ các nút .. cùng lỗi giữ xuất hiện ..
l1ghthouse

1
Có một điều khác bạn có thể thử. Trong Xcode, đi tới "trình điều hướng điểm ngắt" và thêm "Điểm ngắt ngoại lệ". Chạy ứng dụng và xem liệu nó có kích hoạt bất kỳ điểm ngắt ngoại lệ nào không. Nếu vậy, bạn có thể thấy sâu hơn những gì sẽ xảy ra.
utogaria

Nếu nó hoạt động thì đó là một suy nghĩ rất tốt để gỡ lỗi liên quan đến, các phần UI.
Arpit B Parekh

29

Sự cố này xảy ra với Xcode 7. Trong trường hợp của tôi, tôi đã xóa UIViewControllerBasedStatusBarAppearancetừ Info.plistvà vấn đề đã được giải quyết! Xem câu trả lời trong bài viết này :


giải pháp của bạn cũng phù hợp với tôi, tuy nhiên, nếu tôi muốn thanh UIStatusbar vẫn trắng thì sao?
swiftBoy

Tôi sẽ không xem xét đó là một "sửa chữa" vì tôi nghĩ hầu hết những người thiết UIViewControllerBasedStatusBarAppearancechỉ vì họ cần nó, nhưng hóa ra tôi đã sai vì câu trả lời này có 19 upvotes: p
superarts.org

Vâng tôi đồng ý với bạn. Tôi tìm thấy giải pháp cho màu sắc thay đổi trạng thái thanh trong liên kết này: stackoverflow.com/a/32675066/1095530
Weles

Không làm việc ở đây, và một số người cần điều này trong plist từ cách cũ để ẩn thanh trạng thái hiện đang bị phản đối
Thibaut noah

-6

Trên Xcode 7:

Trong trường hợp bạn vẫn muốn ẩn thanh trạng thái, chỉ cần thay đổi UIViewControllerBasedStatusBarAppearancetrong Info.plisttệp thành View controller-based status bar appearance. Đừng quên đặt nó bằngNO


2
Điều này không có ý nghĩa; UIViewControllerBaseStatusBarAppearanceView controller-based status bar appearancelà điều tương tự trên Info.plist. Một là giá trị khóa và một là giá trị mà người dùng phải đối mặt.
esttorhe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.