【发布时间】:2013-09-20 19:02:17
【问题描述】:
对于这个常见错误,我们深表歉意。
但我正在 X-Code 4.6 中创建一个转换器应用程序
我正在创建一个二进制到十进制转换器,我希望能够放置两个区域来进行计算。但由于某种原因,这给了我一个信号中止问题。
我已经尝试寻找一些答案,但我了解到这个错误的范围很大,所以有没有人可以帮助我,我只是 iOS 编程的初学者。
错误:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'+[BinaryToDecimal 计算]: 无法识别的选择器发送到类 0x7c98'
应用程序的界面包含 8 个按钮,以便用户可以将每个按钮切换为 1 或 0。
所以第一个调用的代码是;
- (IBAction)chk1:(id)sender {
if(chk1)
{
number = number + 1;
[_chk1 setTitle:@"1" forState:UIControlStateNormal];
chk1 = false;
} else {
number = number - 1;
[_chk1 setTitle:@"0" forState:UIControlStateNormal];
chk1 = true;
}
[[self class]calculation];
}
计算是
- (void)calculation {
switch (operatorVar) {
case 1:
answer = number + number2;
_output.text = [NSString stringWithFormat:@"%f", answer];
break;
case 2:
answer = number - number2;
_output.text = [NSString stringWithFormat:@"%f", answer];
break;
case 3:
answer = number * number2;
_output.text = [NSString stringWithFormat:@"%f", answer];
break;
case 4:
answer = number / number2;
_output.text = [NSString stringWithFormat:@"%f", answer];
break;
default:
answer = number + number2;
_output.text = [NSString stringWithFormat:@"%f", answer];
break;
}
}
在我这样做之前,我的代码是
- (IBAction)chk1:(id)sender {
if(chk1)
{
number = number + 1;
[_chk1 setTitle:@"1" forState:UIControlStateNormal];
chk1 = false;
} else {
number = number - 1;
[_chk1 setTitle:@"0" forState:UIControlStateNormal];
chk1 = true;
}
_output.text = [NSString stringWithFormat:@"%f", number];
}
上面的代码运行良好,但是当我调用计算方法时,信号中止错误使应用程序无法运行。
【问题讨论】:
-
你如何以及在哪里调用这个方法?
-
@SuryakantSharma
[[self class]calculation];是我用来从每个检查操作中调用计算方法的方法 -
根据您共享的代码行,您正在调用 Class 方法,但您的计算方法是实例方法。使用[自算];
-
@SuryakantSharma 是的,它成功了!谢谢:)
-
那很好!!!接受我的回答。
标签: ios objective-c sigabrt