establezca la variable de entorno CG_CONTEXT_SHOW_BACKTRACE
A pesar de haber revisado más de 3 publicaciones (hechas en 2015) sobre este problema, no he resuelto el mío.
Cada vez que ejecuto, un código simple para dibujar una línea usando UIBezierPath el programa me devolvería esto:
: CGContextSetStrokeColorWithColor: contexto no válido 0x0. Si desea ver la traza inversa, configure la variable de entorno CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetFillColorWithColor: contexto no válido 0x0. Si desea ver la traza inversa, configure la variable de entorno CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSaveGState: contexto no válido 0x0. Si desea ver la traza inversa, configure la variable de entorno CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetLineWidth: contexto no válido 0x0. Si desea ver la traza inversa, configure la variable de entorno CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetLineJoin: contexto no válido 0x0. Si desea ver la traza inversa, configure la variable de entorno CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetLineCap: contexto no válido 0x0. Si desea ver la traza inversa, configure la variable de entorno CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetMiterLimit: contexto no válido 0x0. Si desea ver la traza inversa, configure la variable de entorno CG_CONTEXT_SHOW_BACKTRACE.
: CGContextSetFlatness: contexto no válido 0x0. Si desea ver la traza inversa, configure la variable de entorno CG_CONTEXT_SHOW_BACKTRACE.
: CGContextAddPath: contexto no válido 0x0. Si desea ver la traza inversa, configure la variable de entorno CG_CONTEXT_SHOW_BACKTRACE.
: CGContextDrawPath: contexto no válido 0x0. Si desea ver la traza inversa, configure la variable de entorno CG_CONTEXT_SHOW_BACKTRACE.
: CGContextRestoreGState: contexto no válido 0x0. Si desea ver la traza inversa, configure la variable de entorno 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];
}
Si tuviera que dibujar usando drawRect
- (void) drawRect:(CGRect)rect {
....
}
No aparecerá ningún error. Me preguntaba si estaba recibiendo estos errores porquetouchesBegan
ytouchesMoved
no puede realizar el dibujo?
En cacao (OS X) solía usarsetNeedsDisplay
, pero no existe en el toque de cacao.
Todo lo que pregunto es si hay alguna forma de eliminar estos errores o hay otra forma de dibujarUIBezierPath
durante el tiempo de ejecución.