219

この恐ろしい問題について見つけられる限り多くの検索結果を読みましたが、残念ながら、それぞれが特定の関数呼び出しに焦点を当てているようです。

私の問題は、私が使用している関数からコールバックされていると推測している複数の関数から同じエラーが発生することです。

さらに悪いことに、実際のコードは別のプロジェクトにインポートされているカスタム プライベート フレームワーク内にあるため、デバッグは簡単ではありませんか?

誰かが私を正しい方向に向けることができますか? 特定のメソッドを間違って呼び出している、または不適切なコンテキストで呼び出しているような気がしますが、現時点では xcode からの出力はあまり役に立ちません。

: CGContextSetFillColorWithColor: 無効なコンテキスト 0x0。これは重大なエラーです。このアプリケーション、またはアプリケーションが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性が全体的に低下しています。この通知は厚意によるものです。この問題を修正してください。今後のアップデートで致命的なエラーになります。

: CGContextSetStrokeColorWithColor: 無効なコンテキスト 0x0。これは重大なエラーです。このアプリケーション、またはアプリケーションが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性が全体的に低下しています。この通知は厚意によるものです。この問題を修正してください。今後のアップデートで致命的なエラーになります。

CGContextSaveGState: 無効なコンテキスト 0x0。これは重大なエラーです。このアプリケーション、またはアプリケーションが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性が全体的に低下しています。この通知は厚意によるものです。この問題を修正してください。今後のアップデートで致命的なエラーになります。

: CGContextSetFlatness: 無効なコンテキスト 0x0。これは重大なエラーです。このアプリケーション、またはアプリケーションが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性が全体的に低下しています。この通知は厚意によるものです。この問題を修正してください。今後のアップデートで致命的なエラーになります。

: CGContextAddPath: 無効なコンテキスト 0x0。これは重大なエラーです。このアプリケーション、またはアプリケーションが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性が全体的に低下しています。この通知は厚意によるものです。この問題を修正してください。今後のアップデートで致命的なエラーになります。

: CGContextDrawPath: 無効なコンテキスト 0x0。これは重大なエラーです。このアプリケーション、またはアプリケーションが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性が全体的に低下しています。この通知は厚意によるものです。この問題を修正してください。今後のアップデートで致命的なエラーになります。

: CGContextRestoreGState: 無効なコンテキスト 0x0。これは重大なエラーです。このアプリケーション、またはアプリケーションが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性が全体的に低下しています。この通知は厚意によるものです。この問題を修正してください。今後のアップデートで致命的なエラーになります。

: CGContextGetBlendMode: 無効なコンテキスト 0x0。これは重大なエラーです。このアプリケーション、またはアプリケーションが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性が全体的に低下しています。この通知は厚意によるものです。この問題を修正してください。今後のアップデートで致命的なエラーになります。

これらのエラーは、カスタム ビューまたはその継承されたクラスの 1 つが表示されたときに発生する可能性があります。その時点で、キーボードが入力を提供しなくなるまで、複数回スポーンします。タッチ イベントは引き続き登録されますが、システムの速度が低下し、最終的に未割り当てオブジェクト エラーが発生する可能性があります。

編集 #1:インポートされているフレームワークにアクセスできますが、クラスに問題の原因となる奇妙なものは見当たりません。

編集 #2: iOS 7.1 が開発者向けにリリースされたというメールを受け取りました。これがなくなるのか、悪化するのか、解決できるのか、興味があります。

4

26 に答える 26

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

size.width または size.height が 0 でないことを確認してください。

チェックするために CGPostError にシンボルブレークポイントを追加できます

于 2014-03-11T07:46:21.027 に答える
16

私の場合、このコードにこれらのエラーがあります:

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];

私が検出したように-私のコードでは、充填は他の方法で行われるため、この呼び出しは必要ありません-したがって、単純に削除します。

于 2013-12-03T06:50:40.070 に答える
4

CATextLayer オブジェクトで使用されていた NSAttributedString 辞書の属性として UIColor オブジェクトを使用していたため、このエラーが発生していました。CGColorRef を保持するように辞書を変更すると、エラーはなくなりました。

[wordAttributes setObject:(id)[UIColor whiteColor].CGColor forKey:(NSString*)kCTForegroundColorAttributeName];
于 2014-04-15T21:51:57.310 に答える
2

私の場合、キャップインセットを使用して resible 画像を作成するときにこの警告が表示されました。問題は、「キャップされていない」領域に少なくとも 1 ピクセルを残していなかったことです。

    UIImage *image = [UIImage imageNamed:@"name"];
    UIEdgeInsets edgeInsets = UIEdgeInsetsMake(20, 10, 20, 10);  //Problem here if the width is 20 or the height is 40
    image = [image resizableImageWithCapInsets:edgeInsets];
于 2015-03-09T15:28:40.673 に答える
2

から返されたコンテキストが である場合があり、UIGraphicsGetCurrentContext()それNULLを何かに使用しようとすると、このメッセージが表示されます。UIGraphicsPushContextを呼び出す前に を使用してコンテキストをプッシュするのはビューの責任です。コンテキストがまだ設定されていないリスクを負う代わりに直接drawRect:呼び出す場合です。私の推測では、iOS 7 より前は のビューにコンテキストがプッシュされていましたが、iOS 7 では、最初に呼び出されるまでコンテキストはプッシュされません。一部の UIKit コードが直接呼び出していると思われます。これが、カスタム描画が行われていない場合でも一部のコードに問題がある理由です。drawRect:[view setNeedsDisplay]initdrawRect:drawRect:

解決策 (カスタム描画を行う場合):

  1. drawRect:直接呼び出すのではなく、[view setNeedsDisplay]すぐに描画する必要がある場合は または を使用してください[view.layer draw]
  2. コンテキストをdrawRect:取得しますが、このifステートメントの本体の外では使用しないでくださいif (context) {<do drawing here>}
于 2014-01-14T17:54:33.137 に答える
2

場合によっては、行を含める必要があります#import <QuartzCore/QuartzCore.h>

于 2014-07-17T06:46:26.317 に答える
1

コードでエラーが発生しました

UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:pointA];
[path addLineToPoint:pointB];
[path addLineToPoint:pointC];
[[UIColor colorWithHexString:@"EFEFEF"] set];
[path fill];
[path closePath];

CAShapeLayer *triangle = [CAShapeLayer layer];
triangle.fillColor = [UIColor colorWithHexString:@"EFEFEF"].CGColor;
triangle.path = path.CGPath;

return triangle;

コードを削除した後

[[UIColor colorWithHexString:@"EFEFEF"] set];
[path fill];

世界が静かになった

于 2016-03-23T08:27:13.130 に答える
1

以下のコードを使用して、コンテキストから UIImage を作成していました。

    UIGraphicsBeginImageContext(サイズ);
    CGContextRef コンテキスト = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, color.CGColor);
    CGContextFillRect(context, (CGRect){.size = size});

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

したがって、エラーが発生していました。

そこで、派生データのコンテンツを削除し、XCode を再起動しました。そしてそれはうまくいきました。

于 2014-02-03T10:16:46.830 に答える
1

私も同じ問題を抱えてる。私のプロジェクトでは、textField を作成して PDF ファイルに追加しようとしました。古いコード:

- (void) drawInContext:(CGContextRef)context {
    //Otherwise we're upside-down
    CGContextSetTextMatrix(context, CGAffineTransformMake(1.0,0.0, 0.0, -1.0, 0.0, 0.0));

    CGContextSetTextDrawingMode(context, kCGTextFill); // This is the default
    [[UIColor blackColor] setFill]; // ***This is the problem ***

    CGFloat x = self.rect.origin.x;
    CGFloat y = self.rect.origin.y + self.font.pointSize;
    [self.text drawAtPoint:CGPointMake(x, y)
            withAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Arial" size:12]}];
}

この問題を解決した後、コードが変更されました:

old:[[UIColor blackColor] setFill]; 

new:CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);

UIColor SetFill does not workで解決策が見つかりました。そしてヘルパーに感謝します。

于 2014-12-03T07:41:18.127 に答える
0

設定したとおりにこのエラーが発生しました

textfield.delegate = self

デリゲート ルーチンを実装しない場合。その行を削除すると、問題が解決しました

于 2014-04-15T06:03:30.187 に答える
0

私にとっては、以下に示すように CGContextRef を解放していたため、このエラーが発生していました。

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    // DRAW BACKGROUND CIRCLE
    CGContextSetFillColorWithColor(context, [[UIColor gray] colorWithAlphaComponent:0.6].CGColor);
    CGContextFillEllipseInRect(context, rect);

//    CGContextRelease(context);
}

リリースを削除すると問題が解決しました

于 2014-08-26T17:41:33.403 に答える
0

シミュレーターからアプリをアンインストールして、もう一度実行します

于 2014-09-12T09:43:30.877 に答える
0

UIActivity サブクラスの activityImage メソッドで画像名を打ち間違えた時に出ました

- (UIImage *)activityImage
{
    return [UIImage imageNamed:@"img.png"];
}

正しい画像を入力すると解決しました。

于 2014-08-31T20:57:51.037 に答える