Possible en double:
EXC_BAD_ACCESS when trying to get iPhone screen dimensionsObjective-C: Réception "EXC_BAD_ACCESS" Signal
Je l'extrait de code de code suivant dans Objective-C qui définit automatiquement certaines variables à un certain nombre de paramètres prédéfinis . Cependant, sur la ligne marquée, j'obtiens une exception "Program received signal: EXC_BAD_ACCESS". Ce qui me rend confus, c'est que la ligne ci-dessus est identique, juste avec une valeur différente. Si la ligne 1 ne lance pas d'exception, pourquoi la ligne 2? Que puis-je faire à ce sujet?
Merci d'avance!
Sterren
- (IBAction)presetPressed:(id)sender {
if(self.userEnteringNumber) [self enterPressed];
double xVal;
double aVal;
double bVal;
NSString *preset = [sender currentTitle];
if ([preset isEqualToString:@"1"]) {
xVal = 1;
aVal = 2;
bVal = 3;
} else if ([preset isEqualToString:@"2"]) {
xVal = 1.5;
aVal = 2.9;
bVal = 3.0;
} else if ([preset isEqualToString:@"3"]) {
xVal = -1;
aVal = -2;
bVal = -3;
}
[self.variables setValue:[NSNumber numberWithDouble:xVal] forKey:@"x"];
[self.variables setValue:[NSNumber numberWithDouble:aVal] forKey:@"a"];
[self.variables setValue:[NSNumber numberWithDouble:bVal] forKey:@"b"];
self.xVar.text = [NSString stringWithFormat:@"= %@", xVal];
self.aVar.text = [NSString stringWithFormat:@"= %@", aVal]; //EXC_BAD_ACCESS here
self.bVar.text = [NSString stringWithFormat:@"= %@", bVal];
[self calculateResult];
}
Merci, cela résout mon problème. Une partie de la question est liée à la raison pour laquelle cela fonctionne pour la première déclaration mais pas la seconde. En outre, toutes les 3 déclarations arrivent à fonctionner quand preset == "1". Si% @ est supposé fonctionner uniquement pour les objets et non pour les primitives, pourquoi cela marche-t-il parfois et parfois non? – Steztric
Merci les répondants! Votre aide est grandement appréciée. Vos deux solutions, T Reddy et Till, sont excellentes. Cependant, armé de l'information que% @ est pour les objets, j'ai décidé pour la solution suivante; self.xVar.text = [NSString stringWithFormat: @ "=% @", [NSnumber numberWithDouble: xVal]]; Cela garantit que le texte dans xVar est bien formaté sans zéros de fin inutiles. – Steztric