Objective-C には、いくつかの変数を多数のプリセットに自動的に設定する次のコード スニペットがあります。ただし、マークされた行で、「Program received signal: EXC_BAD_ACCESS」例外が発生します。
私を混乱させるのは、上の行が同じで、値が異なるだけだということです。1 行目で例外がスローされない場合、なぜ 2 行目で例外がスローされるのでしょうか? これについて何ができますか?
前もって感謝します!
ステレン
- (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];
}