1

私は Xcode を使い始めたばかりで、友達と一緒に簡単な響板アプリを作成しています。

最初の行に問題があります。私はコードを書いており、それが正しいと確信していますが、なぜこれがここにあるのか理解できません! 「期待される ';' が表示されます。メソッドのプロトタイプの後」であり、それを修正するためにあらゆることを試みましたが、セミコロンを挿入するだけでさらに 3 つのエラーが発生します。ここに私のコードがあります

'#import "ViewController.h"'

@interface ViewController ()

// Sound for Ben
- (IBAction)playsound1 { // this is where the error is. It is not on any other line

NSString *path = [[NSBundle mainBundle] pathForResource:@"Ben" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

theAudio.delegate=self;
[theAudio play];
}
// Sound for Bruno
- (IBAction)playsound2 {

NSString *path = [[NSBundle mainBundle] pathForResource:@"Bruno" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL    fileURLWithPath:path] error:NULL];

theAudio.delegate=self;
[theAudio play];
}
// Sound for Homer
- (IBAction)playsound3 {

NSString *path = [[NSBundle mainBundle] pathForResource:@"Homer" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

theAudio.delegate=self;
[theAudio play];
}
// Sound for Jon
- (IBAction)playsound4 {

NSString *path = [[NSBundle mainBundle] pathForResource:@"Jon" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

theAudio.delegate=self;
[theAudio play];
}
// Sound for Mark
- (IBAction)playsound5 {

NSString *path = [[NSBundle mainBundle] pathForResource:@"Mark" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

theAudio.delegate=self;
[theAudio play];
}
// Sound for Mikey
- (IBAction)playsound6 {

NSString *path = [[NSBundle mainBundle] pathForResource:@"Mikey" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL     fileURLWithPath:path] error:NULL];

theAudio.delegate=self;
[theAudio play];
}
// Sound for Omar
- (IBAction)playsound7 {

NSString *path = [[NSBundle mainBundle] pathForResource:@"Omar" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

theAudio.delegate=self;
[theAudio play];
}
// Sound for Tom
- (IBAction)playsound8 {

NSString *path = [[NSBundle mainBundle] pathForResource:@"Tom" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

theAudio.delegate=self;
[theAudio play];
}
// Sound for Victor
- (IBAction)playsound9 {

NSString *path = [[NSBundle mainBundle] pathForResource:@"Victor" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

theAudio.delegate=self;
[theAudio play];
}
@end

@implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end

ねえ、すべてのエラーはなくなりましたが、実行すると、ボタンをクリックすると閉じて、ここに移動します

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

 int main(int argc, char *argv[])
  {
      @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

SIGABRT エラーで「main.m」の「return」行を緑色で強調表示しますか?

4

2 に答える 2

5

最初の行に問題があります

もちろんそうです -- インターフェイス セクションに完全な機能があります。インターフェイスには、メソッド プロトタイプのみを含める必要があります。メソッド定義は実装セクションに入ります。あなたが持っている:

@interface ViewController ()

- (IBAction)playsound1 { // this is where the error is. It is not on any other line

NSString *path = [[NSBundle mainBundle] pathForResource:@"Ben" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

theAudio.delegate=self;
[theAudio play];
}

代わりに次のようにする必要があります。

@interface ViewController ()

- (IBAction)playsound1;

// ...
@end

に続く:

@implementation ViewController

- (IBAction)playsound1 { // this is where the error is. It is not on any other line
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Ben" ofType:@"mp3"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

    theAudio.delegate=self;
    [theAudio play];
}

// ...
@end

(読みやすくするためにインデントを追加しました。)

于 2012-07-14T04:06:44.263 に答える
1

にメソッドの定義を書いてはいけません@interface ... @end。メソッドのみを宣言できます。でメソッドの定義を記述し、 で@implementation ....@endメソッドを宣言します@interfaece...@end

お役に立てると思います。

于 2012-07-14T04:17:22.413 に答える