0
@implementation ViewController

-(IBAction)ReturnKeyButton:(id)sender {
  [sender resignFirstResponder];
}

@synthesize torque, horsepower, rpm, rpmf2;

-(IBAction)Operation1:(id)sender {
  float result = 2 * 3.14 *([torque.text floatValue] * [rpm.text floatValue]) / 33000;

  answer1.text = [[NSString alloc] initWithFormat:@"%2.f", result];
}

-(IBAction)Operation2:(id)sender {
  float result = 2 * 3.14 * ([horsepower.text floatValue] * [rpmf2.text floatValue]) /     33000;

  answer2.text = [[NSString alloc] initWithFormat:@"%2.f", result];
}

テキスト フィールドを数値にフォーマットしたいと考えています。これは機能しますが、私の埋め込みの answer1.text と answer2.text に警告サインがあります。問題は、スレッド ポイントが最終的に破損することです。これの何が問題なのですか?

編集:

@interface ViewController : UIViewController {
        float result;
        IBOutlet UILabel *answer1;
        IBOutlet UILabel *answer2;
        IBOutlet UITextField *torque;
        IBOutlet UITextField *rpm;
        IBOutlet UITextField *horsepower;
        IBOutlet UITextField *rpmf2;
        int currentOperation1;
        float torque1;
        float rpm1;
        float horsepower1;
        float rpm1f2;
        float answer5;
    }

    -(IBAction)Operation1:(id)sender;
    -(IBAction)Operation2:(id)sender;
    @property(nonatomic, retain) IBOutlet UITextField *torque;
    @property(nonatomic, retain) IBOutlet UITextField *rpm;
    @property(nonatomic, retain) IBOutlet UITextField *horsepower;
    @property(nonatomic, retain) IBOutlet UITextField *rpmf2;
    -(IBAction)ReturnKeyButton;
@end
4

3 に答える 3

5

ローカル宣言はインスタンス変数を隠します

最初のエラーは、メンバー変数が次のように宣言されているためです。

float result;

そして、メソッド内で同じように宣言されたローカル変数があります。したがって、ローカル変数はメンバー変数をマスクしています。名前が衝突しないようにする必要があります。

不完全な実装

2 番目のエラーは、ヘッダーにメソッドが宣言されているためです。

-(IBAction)ReturnKeyButton:(id)sender

しかし、あなたは実装します

-(IBAction)ReturnKeyButton;

これらは 2 つのまったく異なるメソッドReturnKeyButtonであり、一方が呼び出され、もう一方が呼び出されReturnKeyButton:ます。名前の末尾にコロンが付いていることに注意してください。

これを修正するには、宣言が一致していることを確認してください。

-(IBAction)ReturnKeyButton;-(IBAction)ReturnKeyButton:(id)sender実装に

于 2013-03-11T13:16:02.610 に答える
1

あなたの質問には2つの警告メッセージが含まれています:

1.「」のローカル宣言はインスタンスを非表示にします

ivarのプロパティと同じ名前のメソッドがあります。

たとえば、クラスにはというプロパティがmyPropertyあり、メソッドには作成しますmyProperty

1つの方法は、メソッドの変数に別の名前を使用することです。または、合成で、プロパティをエイリアスとしてオーバーライドします@synthesize myProperty=_myProperty;

float resultクラスとメソッドにあります。Operation1:両方のメソッドで結果をtempResultまたはその他の変数名に変更します。Operation2:

XCode 4.4以降を使用している場合、コンパイラ synthesizeはプロパティを。で指定し_ます。

2.不完全な実装-新鮮なものが必要

.hファイルで宣言したすべてのメソッドを実装していません。

-(IBAction)ReturnKeyButton;# .mファイルに実装していません

そこでローカルメソッドを作成しました-(IBAction)ReturnKeyButton:

于 2013-03-11T13:02:12.013 に答える
0

selfを使用して変数を呼び出していない可能性があります。

このように呼んでみてください

self.torque.text、self.horsepower.text、self.rpm.text、self.rpmf2.text

お役に立てれば !!!

于 2013-03-11T13:01:07.980 に答える