-(void)drawLineToPoint:(CGPoint)pt
{
_trackPointValue = [NSValue valueWithCGPoint:pt];
NSLog(@"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_trackPointValue.x = %f, _trackPointValue.y = %f", [_trackPointValue CGPointValue].x, [_trackPointValue CGPointValue].y);
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect
{
NSLog(@"#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@_trackPointValue.x = %f, _trackPointValue.y = %f", [_trackPointValue CGPointValue].x, [_trackPointValue CGPointValue].y);//此处错误EXT_BAD_ACCESS (code = 1, address = 0x7000 0008)
NSLog(@"drawrect...");
if (!_trackPointValue)
return;
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 23.0);
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGFloat components[] = {0.5, 0.5, 0.5, 0.8};
CGColorRef color = CGColorCreate(colorspace, components);
CGContextSetStrokeColorWithColor(context, color);
CGContextBeginPath(context);
CGPoint from;
UIView *lastDot;
for (UIView *dotView in _dotViews) {
from = dotView.center;
NSLog(@"drwaing dotview: %@", dotView);
NSLog(@"\tdrawing from: %f, %f", from.x, from.y);
if (!lastDot)
CGContextMoveToPoint(context, from.x, from.y);
else
CGContextAddLineToPoint(context, from.x, from.y);
lastDot = dotView;
}
//CGPoint pt = [_trackPointValue CGPointValue];
//NSLog(@"\t to: %f, %f", pt.x, pt.y);
//CGContextAddLineToPoint(context, pt.x, pt.y);
CGContextStrokePath(context);
CGColorSpaceRelease(colorspace);
CGColorRelease(color);
_trackPointValue = nil;
}
代码见上,红色标注的是出错的地方,setNeedsDisplay之前[_trackPointValue CGPointValue]是正常的,之后调用drawrect后[_trackPointValue CGPointValue]出错,其中_trackPointValue是定义再头文件中的.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货