-(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是定义再头文件中的.