本地声明“”隐藏实例和不完整的实现

时间:2013-03-11 12:53:34

标签: objective-c xcode

@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

3 个答案:

答案 0 :(得分:5)

本地声明隐藏实例变量

第一个错误是因为您将成员变量声明为

float result;

然后在你的方法中你有一个声明为相同的局部变量。因此局部变量屏蔽成员变量。您应该确保名称不会发生冲突。

执行不完整

第二个错误是因为您在标题中声明了一个方法

-(IBAction)ReturnKeyButton:(id)sender

然后你实施

-(IBAction)ReturnKeyButton;

这是两种完全不同的方法,一种称为ReturnKeyButton,另一种称为ReturnKeyButton:,注意名称后面的冒号。

要解决此问题,请确保声明符合例如变化

实施中的

-(IBAction)ReturnKeyButton;-(IBAction)ReturnKeyButton:(id)sender

答案 1 :(得分:1)

您的问题包含两条警告讯息:

<强> 1。本地声明“”隐藏实例

您拥有ivar属性和同名方法。

e.g。在您的班级中,您有一个名为myProperty的属性,并在您创建myProperty的方法中。

一种方法是为方法的变量使用不同的名称。或者在合成中使用别名@synthesize myProperty=_myProperty;覆盖您的属性。

#您在班级和方法中都有float result。在方法Operation1:Operation2:

中将结果更改为tempResult或任何其他变量名称

如果您使用的是XCode 4.4+,那么编译器synthesize的属性为_

<强> 2。实施不完整 - 需要新鲜

您尚未实现在.h文件中声明的所有方法。

#您尚未在.m文件中实现-(IBAction)ReturnKeyButton;

您已在-(IBAction)ReturnKeyButton:

创建了一个本地方法

答案 2 :(得分:0)

可能是你没有使用self调用变量。

尝试像这样打电话

self.torque.text, self.horsepower.text, self.rpm.text, self.rpmf2.text

希望这有帮助!!!