0

我正在尝试使用按钮、计分器和计时器制作一个简单的应用程序,但我遇到了一些错误

    #import <UIKit/UIKit.h>

@interface xyzViewController : UIViewController
{
IBOutlet UILabel *scoreLabel;
IBOutlet UILabel *timerLabel;
NSInteger count;
NSInteger seconds;
NSTimer *timer;
}
- (IBAction)buttonPressed  //Expected ';' after method prototype
{
count++
scoreLabel.text = [NSString stringWithFormat:@"Score \n %i", count]
}
@end

如果我添加';' 我得到了这个:

- (IBAction)buttonPressed;
{                        //Expected identifier or '('
count++
scoreLabel.text = [NSString stringWithFormat:@"Score \n %i", count]
}
@end

我必须做什么?

4

3 回答 3

2

在 .h 中定义您的接口,如果它们是公开的,然后在 .m 中创建您的实现。您不能将它们组合在 .h 中

于 2013-11-12T19:02:29.360 回答
2

你正在混淆interfaceimplementation。该接口包含(全局可见的)实例变量、属性和方法声明,即原型:

@interface xyzViewController : UIViewController
{
    IBOutlet UILabel *scoreLabel;
    IBOutlet UILabel *timerLabel;
    NSInteger count;
    NSInteger seconds;
    NSTimer *timer;
}
- (IBAction)buttonPressed;

@end

该方法本身进入实现:

@implementation xyzViewController

- (IBAction)buttonPressed
{
    count++;
    scoreLabel.text = [NSString stringWithFormat:@"Score \n %i", count];
}
@end

评论:

  • 惯例是以大写字母开头的类名:XyzViewController.
  • 为网点创建属性(如果您还没有):

    @property (weak, nonatomic) IBOutlet UILabel *scoreLabel;
    

    编译器会自动合成实例变量_scoreLabel,因此您不需要在接口中使用它。然后通过

    self.scoreLabel.text = ....;
    
于 2013-11-12T19:02:37.780 回答
1

您希望在函数中使用分号,如下所示:

- (IBAction)buttonPressed {
count++;
scoreLabel.text = [NSString stringWithFormat:@"Score \n %i", count];
}

这是要使用的正确语法。

于 2013-11-12T19:00:04.413 回答