SetStrokeColorWithColor中的UIColor触发EXC_BAD_ACCESS - 内存问题?

时间:2010-11-04 19:34:42

标签: iphone core-graphics cgcontext uicolor

我画了一条大线,颜色沿着线条变化。

我一次又一次在代码的第4行得到EXC_BAD_ACCESS。

我怀疑它与* tempColor的自动释放有关,但无法解决如何使其有效工作而不是崩溃。

有什么想法吗?这次代码在50次运行中崩溃了。

                    CGContextBeginPath(ctx);
                    CGContextMoveToPoint(ctx, lastx, lasty);
                    CGContextAddLineToPoint(ctx, point.x, point.y);
                    UIColor *tempColor  = [self colorForHex:[[heightLocal objectAtIndex:idx] doubleValue]];
                    CGContextSetStrokeColorWithColor(ctx,tempColor.CGColor);
                    CGContextStrokePath(ctx);

                    lastx = point.x;
                    lasty = point.y;

编辑:

在该建议之后快速播放并且可能认为是因为heightLocal未初始化?

我把它变成了代码......

if(idx > [heightLocal count]){
                            heightVar = 0;  
                            NSLog(@"Made it here");
                        }else {
                            heightVar = [[heightLocal objectAtIndex:idx] doubleValue];
                        }
                        UIColor *tempColor  = [self colorForHex:heightVar];

并在第一行得到相同的错误。 if!

使用...

初始化heightLocal
NSArray *heightLocal = routeGrabInstance.pointHeights;

1 个答案:

答案 0 :(得分:1)

我会说你得到的数组:

routeGrabInstance.pointHeights;

没有得到妥善保留。如果它像许多类一样,它可以作为自动释放返回。

尝试:

[heightLocal retain]

之后

NSArray *heightLocal = routeGrabInstance.pointHeights;