0

我有一条大线要画,颜色沿线变化。

我时不时地在代码的第 4 行得到 EXC_BAD_ACCESS。

我怀疑这与 *tempColor 的自动释放有关,但无法弄清楚如何让它有效地工作而不是崩溃。

有任何想法吗?这在此代码的 50 次运行中有 1 次崩溃。

                    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];

它在第一行得到同样的错误。如果!

heightLocal 使用...进行初始化

NSArray *heightLocal = routeGrabInstance.pointHeights;
4

1 回答 1

1

我会说你得到的数组:

routeGrabInstance.pointHeights;

没有被正确保留。如果它像许多类一样,它可以作为自动释放返回。

尝试:

[heightLocal retain]

在你之后

NSArray *heightLocal = routeGrabInstance.pointHeights;
于 2010-11-04T20:27:54.877 回答