пожалуйста, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE
Несмотря на просмотр более 3 постов (сделанных в 2015 году) об этой проблеме, не решил мой.
Когда я запускаю простой код для рисования линии с использованием UIBezierPath, программа возвращает мне следующее:
: CGContextSetStrokeColorWithColor: неверный контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetFillColorWithColor: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSaveGState: неверный контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetLineWidth: неверный контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetLineJoin: неверный контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetLineCap: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetMiterLimit: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetFlatness: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
: CGContextAddPath: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
: CGContextDrawPath: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
: CGContextRestoreGState: неверный контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную среды CG_CONTEXT_SHOW_BACKTRACE.
@interface line : UIView
UIBezierPath *myPath;
.........
@implementation
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches]anyObject];
CGPoint touchLocation = [touch locationInView:self];
myPath = [UIBezierPath bezierPath];
[myPath moveToPoint:touchLocation];
}
- (void) touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches]anyObject];
CGPoint touchLocation = [touch locationInView:self];
[myPath addLineToPoint:touchLocation];
[[UIColor blackColor]setStroke];
[[UIColor greenColor]setFill];
[myPath stroke];
}
Если бы я рисовал, используя drawRect
- (void) drawRect:(CGRect)rect {
....
}
Ошибка не появится. Мне было интересно, если я получаю эти ошибки, потому чтоtouchesBegan
а такжеtouchesMoved
не можете выполнить рисование?
В какао (OS X) я привык использоватьsetNeedsDisplay
, но это не существует в прикосновении какао.
Все, что я спрашиваю, есть ли в любом случае, чтобы удалить эти ошибки или есть другой способ нарисоватьUIBezierPath
во время выполнения.