0

この一般的なエラーについて申し訳ありません。

しかし、X-Code 4.6 でコンバーター アプリケーションを作成しています。

2 進数から 10 進数へのコンバーターを作成していますが、計算を行うために 2 つの領域を配置できるようにしたいと考えています。しかし、何らかの理由で、これによりシグナルの中止の問題が発生しています。

私はいくつかの答えを探してみましたが、このエラーには大きな範囲があることを知りました.

エラー:

キャッチされない例外 '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];
    }

上記のコードは問題なく動作しましたが、計算メソッドを呼び出すと、シグナル アボート エラーによりアプリケーションが動作しなくなりました。

4

2 に答える 2

2

あなたが共有したエラーの説明によると、メソッドcalculationをクラス メソッドとして呼び出していますが、メソッドcalculationはインスタンス メソッドです。使用する[self calculation];

于 2013-09-20T11:02:17.917 に答える
0

私が思う問題は

[_chk1 setTitle:@"1" forState:UIControlStateNormal];

この文

_chk1 はボタン オブジェクト ワンス クラス チェックです。

それ以外の場合は、このステートメントをボタン アクション メソッドに使用します。

" -(IBAction)buttonTouched:(UIButton *)sender" のようなメソッドをより適切に使用し、各オブジェクトの命名規則を維持し、exe に対してすべてのオブジェクトを同じに宣言します: メソッド名、ボタンオブジェクト、ブール値も次のようなコードを記述しないでくださいそれ ...........

  • (IBAction)chk1:(UIButton*)送信者 {

    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];
    

    }

于 2013-09-20T10:56:22.913 に答える