可能重复:
EXC_BAD_ACCESS when trying to get iPhone screen dimensions目的-C:接收 “EXC_BAD_ACCESS” 信号
我在目标c下面的代码段,可以自动设置一些变量的数目的预置。但是,在标记的行上,我收到了“程序接收信号: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];
}
谢谢,这解决了我的问题。部分问题与为什么这适用于第一种说法但不适用于第二种说法有关。另外,当预置==“1”时,所有3种语句都可以正常工作。如果%@只能用于对象而不是基元,为什么它有时会起作用,有时却不起作用? – Steztric
谢谢受访者!非常感谢您的帮助。您的解决方案T Reddy和Till都非常出色。但是,在用%@作为对象的信息的情况下,我决定采用以下解决方案; self.xVar.text = [NSString stringWithFormat:@“=%@”,[NSNumber numberWithDouble:xVal]]; 这确保了xVar中的文本格式很好,没有不必要的尾随零。 – Steztric