很抱歉这个常见错误。
但是我正在X代码4.6中创建转换器应用程序
我正在创建一个二进制到十进制转换器,我希望能够放置两个区域进行计算。但是由于某种原因,这给了我一个信号中止问题。
我尝试过寻找一些答案,但我了解到这个错误的范围很大,所以有人可以帮助我吗,我只是iOS编程的初学者。
错误:
由于未捕获的异常而终止应用 'NSInvalidArgumentException', reason: '+[BinaryToDecimal computation]: 无法识别的选择器发送到班级 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];
}
上面的代码工作正常,但是当我调用计算方法时,信号中止错误使应用程序停止工作。
根据您共享的错误描述,您将方法 calculation
作为类方法调用,但您的方法 calculation
是实例方法。使用[self calculation];
我认为问题是
[_chk1 setTitle:@"1" forState:UIControlStateNormal];
此声明
_chk1是按钮对象一次粗鲁检查。
其他明智的将此语句用于按钮操作方法,如下所示
最好使用类似" -(IBAction)buttonTouched:(UIButton *)sender"之类的方法,并维护您声明的所有对象的命名约定 exe:方法名称,按钮对象,布尔值也不要编写这样的代码...........
- (
IBAction)chk1:(UIButton*)sender {
IF(CHK1) { 数字 = 数字 + 1;
[sender setTitle:@"1" forState:UIControlStateNormal]; chk1 = false; } else { number = number - 1; [sender setTitle:@"0" forState:UIControlStateNormal]; chk1 = true; } _output.text = [NSString stringWithFormat:@"%f", number];
}