J'ai une grande ligne pour dessiner que la couleur change le long de la ligne.UIColor dans les déclencheurs SetStrokeColorWithColor EXC_BAD_ACCESS - problème de mémoire?
De temps en temps j'obtiens EXC_BAD_ACCESS sur la 4ème ligne du code là.
Je soupçonne que cela a quelque chose à voir avec la libération automatique de la * tempColor, mais je ne sais pas comment faire pour que cela fonctionne efficacement et ne pas tomber en panne.
Des idées? Cela se bloque disons 1 dans 50 exécutions de ce code.
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;
EDIT:
juste eu un jeu rapide après cette suggestion et je pense peut-être qu'il est parce que heightLocal n'est pas initialisé?
Je cahnged au code ici ...
if(idx > [heightLocal count]){
heightVar = 0;
NSLog(@"Made it here");
}else {
heightVar = [[heightLocal objectAtIndex:idx] doubleValue];
}
UIColor *tempColor = [self colorForHex:heightVar];
et il obtient la même erreur sur la première ligne. Le si!
heightLocal est initialisé à l'aide ...
NSArray *heightLocal = routeGrabInstance.pointHeights;
Êtes-vous sûr IDX est toujours dans le nombre de heightLocal? Séparez l'appel du tableau de l'appel colorForHex pour le débogage. – Ben
vous pouvez essayer si (! HeightLocal || idx> = heightLocal.count) – Ben
Parfait, poster comme réponse et je peux l'accepter pour vous. –