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

最初の行でも同じエラーが発生します。if!

heightLocalは...を使用して初期化されます

NSArray *heightLocal = routeGrabInstance.pointHeights;
4

1 に答える 1

1

私はあなたが得る配列を言うでしょう:

routeGrabInstance.pointHeights;

正しく保持されていません。多くのクラスのようであれば、自動リリースとして返される可能性があります。

試してみてください:

[heightLocal retain]

あなたの後

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