Cocoa touch ‘;无效的上下文0x0’;使用CGContext*函数时出错

Cocoa touch ‘;无效的上下文0x0’;使用CGContext*函数时出错,cocoa-touch,quartz-2d,cgcontext,Cocoa Touch,Quartz 2d,Cgcontext,以上是我正在努力完成的代码。它应该做CGContext所说的,但我不会画任何东西。 我一直收到这个错误: /* Adding the Path */ UserGraphBuff = UIGraphicsGetCurrentContext(); CGContextSetRGBStrokeColor(UserGraphBuff,5,10,0,1); CGContextSetLineWidth(UserGraphBuff, 2 ); CGContextBeginPath(UserGraphBuf

以上是我正在努力完成的代码。它应该做CGContext所说的,但我不会画任何东西。 我一直收到这个错误:

/*  Adding the Path */
UserGraphBuff = UIGraphicsGetCurrentContext();

CGContextSetRGBStrokeColor(UserGraphBuff,5,10,0,1);
CGContextSetLineWidth(UserGraphBuff, 2 );

CGContextBeginPath(UserGraphBuff);  

//line to last user point
CGContextAddLineToPoint(UserGraphBuff, (*xVal)[sizeof xVal / sizeof *xVal - 1], (*yNewVal)[sizeof yNewVal / sizeof *yNewVal - 1]);
//line to rest of user points in reverse order
for (int i = sizeof xVal / sizeof *xVal - 1; i > -1; i--){
    CGContextAddLineToPoint(UserGraphBuff, (*xVal)[i], (*yNewVal)[i]);
}

//EOFill
CGContextEOFillPath(UserGraphBuff);
周五10月28日13:18:40 case.app测试应用程序[4127]:CGContextSetRGBStrokeColor:无效上下文0x0
10月28日星期五13:18:40 case.app测试应用程序[4127]:CGContextSetLineWidth:无效上下文0x0
10月28日星期五13:18:40 case.app测试应用程序[4127]:CGContextBeginPath:无效上下文0x0
10月28日星期五13:18:40 case.app测试应用程序[4127]:CGContextAddLineToPoint:无效上下文0x0
10月28日星期五13:18:40 case.app测试应用程序[4127]:CGContextDrawPath:无效上下文0x0
我在头文件中引用CGContextRef


我认为我对CGContext理解得不够透彻,也不知道CGContextRef应该是什么。

为了让代码正常工作,它需要在
UIView
子类的
drawRect
方法中执行(并且您不直接调用
drawRect
,这是操作系统在需要UIView呈现自身时调用的)。您可能正在尝试从触摸事件或从
viewDidLoad
或类似的内容运行此代码。

此代码在哪里?在
UIView
子类的
drawRect
中?这到底是什么?它有什么作用?它是由
-drawRect:
调用的吗?它有自己的几种方法。这不是唯一的。我正在通过检查事件运行此。我希望用户数据与实际图形交叉引用(这实际上是一个追踪游戏)。在这一点上,我只是想做一个路径,说明绘制的人已经准备好了。重申:您的代码将无法工作(意味着它将抛出您看到的错误)除非它在
UIView
子类的
drawRect
方法中运行。并且为了解释:UIView在调用
drawRect:
之前设置当前上下文。这是一个功能:在需要绘图时进行绘图,系统会为您跟踪。不要与之抗争;将图形代码移动到应该的位置,然后使用系统。当视图需要重新绘制时,将视图设置为需要显示。@JohnRiselvato:不,他没有错。您看到的是石英文档,它的级别低于UIKit。当UIKit要求您绘制时,您可以使用石英进行绘制。包含需要显示的
drawRect:
的文档是。@JohnRiselvato对不起,MusiGenesis完全正确。这是正确的答案。
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextSetRGBStrokeColor: invalid context 0x0
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextSetLineWidth: invalid context 0x0
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextBeginPath: invalid context 0x0
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextAddLineToPoint: invalid context 0x0
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextDrawPath: invalid context 0x0