[objective-c] iOS 7.0 및 시스템 성능 저하에서 유효하지 않은 컨텍스트 0x0

나는이 두려운 문제에 대해 찾을 수있는 많은 검색 결과를 읽었습니다. 불행히도 각각은 특정 함수 호출에 집중하는 것 같습니다.

내 문제는 여러 함수에서 동일한 오류가 발생한다는 것입니다.이 함수는 내가 사용하는 함수에서 다시 호출되는 것 같습니다.

설상가상으로 실제 코드는 다른 프로젝트에서 가져 오는 사용자 정의 개인 프레임 워크 내에 있으며 디버깅이 간단하지 않습니까?

누구든지 올바른 방향으로 나를 가리킬 수 있습니까? 특정 메소드를 잘못 호출하거나 컨텍스트가 잘못되었다는 느낌이 들지만 xcode의 출력은 그다지 도움이되지 않습니다.

: CGContextSetFillColorWithColor : 유효하지 않은 컨텍스트 0x0. 이것은 심각한 오류입니다. 이 응용 프로그램 또는 사용하는 라이브러리가 유효하지 않은 컨텍스트를 사용하므로 시스템 안정성과 안정성이 전반적으로 저하됩니다. 이 통지는 예의입니다 :이 문제를 해결하십시오. 다음 업데이트에서 치명적인 오류가됩니다.

: CGContextSetStrokeColorWithColor : 유효하지 않은 컨텍스트 0x0. 이것은 심각한 오류입니다. 이 응용 프로그램 또는 사용하는 라이브러리가 유효하지 않은 컨텍스트를 사용하므로 시스템 안정성과 안정성이 전반적으로 저하됩니다. 이 통지는 예의입니다 :이 문제를 해결하십시오. 다음 업데이트에서 치명적인 오류가됩니다.

CGContextSaveGState : 유효하지 않은 컨텍스트 0x0. 이것은 심각한 오류입니다. 이 응용 프로그램 또는 사용하는 라이브러리가 유효하지 않은 컨텍스트를 사용하므로 시스템 안정성과 안정성이 전반적으로 저하됩니다. 이 통지는 예의입니다 :이 문제를 해결하십시오. 다음 업데이트에서 치명적인 오류가됩니다.

: CGContextSetFlatness : 유효하지 않은 컨텍스트 0x0. 이것은 심각한 오류입니다. 이 응용 프로그램 또는 사용하는 라이브러리가 유효하지 않은 컨텍스트를 사용하므로 시스템 안정성과 안정성이 전반적으로 저하됩니다. 이 통지는 예의입니다 :이 문제를 해결하십시오. 다음 업데이트에서 치명적인 오류가됩니다.

: CGContextAddPath : 유효하지 않은 컨텍스트 0x0. 이것은 심각한 오류입니다. 이 응용 프로그램 또는 사용하는 라이브러리가 유효하지 않은 컨텍스트를 사용하므로 시스템 안정성과 안정성이 전반적으로 저하됩니다. 이 통지는 예의입니다 :이 문제를 해결하십시오. 다음 업데이트에서 치명적인 오류가됩니다.

: CGContextDrawPath : 유효하지 않은 컨텍스트 0x0. 이것은 심각한 오류입니다. 이 응용 프로그램 또는 사용하는 라이브러리가 유효하지 않은 컨텍스트를 사용하므로 시스템 안정성과 안정성이 전반적으로 저하됩니다. 이 통지는 예의입니다 :이 문제를 해결하십시오. 다음 업데이트에서 치명적인 오류가됩니다.

: CGContextRestoreGState : 유효하지 않은 컨텍스트 0x0. 이것은 심각한 오류입니다. 이 응용 프로그램 또는 사용하는 라이브러리가 유효하지 않은 컨텍스트를 사용하므로 시스템 안정성과 안정성이 전반적으로 저하됩니다. 이 통지는 예의입니다 :이 문제를 해결하십시오. 다음 업데이트에서 치명적인 오류가됩니다.

: CGContextGetBlendMode : 유효하지 않은 컨텍스트 0x0. 이것은 심각한 오류입니다. 이 응용 프로그램 또는 사용하는 라이브러리가 유효하지 않은 컨텍스트를 사용하므로 시스템 안정성과 안정성이 전반적으로 저하됩니다. 이 통지는 예의입니다 :이 문제를 해결하십시오. 다음 업데이트에서 치명적인 오류가됩니다.

이러한 오류는 사용자 정의보기가 제공되거나 상속 된 클래스 중 하나 일 때 발생할 수 있습니다. 어떤 시점에서 키보드가 입력을 제공하지 않을 때까지 여러 번 생성됩니다. 터치 이벤트는 계속 등록되지만 시스템 속도가 느려져서 할당되지 않은 개체 오류가 발생할 수 있습니다.

편집 # 1 : 가져 오는 프레임 워크에 액세스 할 수 있지만 클래스에서 문제를 일으키는 이상한 점은 없습니다.

편집 # 2 : 개발자 용 iOS 7.1이 릴리스되었다는 이메일을 받았습니다. 이것이 사라지거나 더 나빠지거나 해결할 수 있는지 궁금합니다.



답변

다른 사람들은 핵심 그래픽 컨텍스트에 액세스하는 코드를 게시하라는 메시지를 표시하지만 문제가 의심됩니다. 이 잘못된 컨텍스트 0x0 오류 메시지는 iOS 7에서 일반적이고 재현하기 쉽습니다. 실제로, 코드가없는 스토리 보드를 사용하여 오류를 재현 할 수 있습니다. UITextField를 IB의 캔버스로 드래그하고 앱을 실행 한 다음 텍스트 필드 내부를 두 번 탭합니다.

많은 상황에서 잘못된 컨텍스트 0x0 오류 메시지를 심각하게 받아들이 기 어렵습니다. 귀하의 상황이 더 큰 관심사를 필요로하는지 모르겠습니다 (특히 그래픽 컨텍스트를 명시 적으로 사용하는 경우 조사 할 가치가 있음을 Rob Napier에 동의합니다).

내 프로젝트에서 이러한 오류 중 많은 부분이 언젠가 마술처럼 사라지기를 바라고 있습니다 (그러나 그 날에는 7.0.3이 나오지 않았습니다).

업데이트 : Xcode 5.1을 설치하고 iOS 7.1을 대상으로 한 후 빈 텍스트 필드 내부를 두 번 눌러 오류를 재현 할 수 없습니다.


답변

어떤 코드가 이러한 로그를 발생시키는 지 궁금한 경우 에 기호 중단 점추가 할 수 있습니다CGPostError .


답변

오류의 이러한 종류의 역사적하지 않을 때 내 설립되는 컨텍스트 내에서 코어 그래픽 함수를 호출의 결과 drawRect또는 같은 호출 사이 UIGraphicsBeginImageContextUIGraphicsEndImageContext(시작 컨텍스트를 종료하는 같은 또는 다른 UIKit 기능).

그러나 bilobatum은이 특정 순서의 오류가 그가 답변에서 언급 한 iOS 7 버그의 결과 일 수 있다고 정확합니다. iOS6 대상에서 이러한 오류가 표시되지 않거나이 개인 프레임 워크를 빠르게 스캔 한 후 Core Graphics 호출이 의심되는 경우이 iOS 7 버그 일 수 있습니다. 잘 잡아라, bilobatum!


답변

UIGraphicsBeginImageContext( size );
CGContextRef context = UIGraphicsGetCurrentContext();

size.width 또는 size.height가 0이 아닌지 확인하십시오.

CGPostError에 기호 중단 점을 추가하여 확인할 수 있습니다.


답변

간단한 UITextField (키보드가 표시되지 않고 콘솔에 잘못된 컨텍스트 오류 메시지가 많이 있음)와 함께이 문제가 발생했습니다. 방금 SO에 대한 다른 문제를 찾아 해결책을 찾았습니다. CFBundle CertUIFramework.axbundle에 대한 실행 파일을 찾을 수 없습니다

그냥 해:

iOS 시뮬레이터> 컨텐츠 및 설정 재설정 …을 클릭하고 다시 실행하십시오.

더 이상 문제가 없어야합니다


답변

제 경우에는이 코드에 다음과 같은 오류가 있습니다.

CAShapeLayer *shapeLayer = [CAShapeLayer layer];
UIBezierPath *path;

path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0, 0)];
[path addLineToPoint:CGPointMake(size*2, 0)];
[path addLineToPoint:CGPointMake(size, size*2)];
[path closePath];
[path fill];

shapeLayer.path = path.CGPath;
shapeLayer.strokeColor = [[UIColor blackColor] CGColor];
shapeLayer.fillColor = color;
shapeLayer.lineWidth = width;

[self addSublayer:shapeLayer];

몇 가지 생각과 테스트 후에 문제가 감지되었습니다.

[path fill];

필자가 감지하면 다른 방법으로 채우기가 수행되므로 코드 에서이 호출이 필요하지 않으므로 간단히 제거합니다.


답변

나는이 같은 문제가 있었고 QuartzCore / QuartzCore.h를 가져 오는 것을 잊었습니다.이 오류로 내 문제가 해결되었습니다.

    #import <QuartzCore/QuartzCore.h>