AVAudioPlayer的问题

时间:2011-03-21 10:34:55

标签: iphone objective-c audio avaudioplayer

我是iPhone-Development的新手。

我想在点击UIButton时播放声音。我尝试了以下方法:

ViewController.h:

@interface JahrenzeitenViewController : UIViewController <AVAudioPlayerDelegate> {

    UIButton *button_PlaySound;
    AVAudioPlayer *audioPlayer;
}

@property (nonatomic, retain) IBOutlet UIButton *button_PlaySound;

ViewController.m

- (IBAction)playSound {

    //[audioPlayer release];
    //audioPlayer = nil;

    NSString *audioFilePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"wav"];
    NSURL *audioFileURL = [NSURL fileURLWithPath:audioFilePath];
    NSError *error = nil;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL error:&error];
    [audioPlayer setDelegate:self];
    [audioPlayer prepareToPlay];
    [audioPlayer play];
    if (audioPlayer == nil) 
        NSLog(@"Error playing sound. %@", [error description]);
    else
        [audioPlayer play];

如果我尝试运行App,则会收到以下错误:

  

架构i386的未定义符号:     “_OBJC_CLASS _ $ _ AVAudioPlayer”,引自:         JahrenzeitenViewController.o中的objc-class-ref   ld:找不到架构i386的符号   collect2:ld返回1退出状态

我也尝试更改Line

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL error:&error];

audioPlayer = [audioPlayer initWithContentsOfURL:audioFileURL error:&error];

然后我没有得到上面的错误,但它仍然没有播放,我在“playSound”中从我的NSLog获取DebugMessage -Method:

  

播放声音时出错。 (NULL)

我希望你能帮助我。提前谢谢你:)

4 个答案:

答案 0 :(得分:30)

您需要将AVFoundation框架添加到项目中。 (右键单击主目标,然后添加现有框架)。

答案 1 :(得分:6)

添加其他答案。

您应该始终查看类“I.e AVAudioPlayer 的文档。当您打算使用它时,您不熟悉。在类的文档(类引用)的顶部,是一个表,显示该类所属的框架:

enter image description here

知道了这一点后,将框架添加到项目中。并将其导入标题(.h)文件,正如其他人指出的那样

答案 2 :(得分:4)

谢谢,它有效。我不知道我必须添加Framework:S

我使用了以下说明:

  1. 在项目导航器中,选择您的项目
  2. 选择目标
  3. 选择“构建阶段”标签
  4. 使用库扩展程序打开'链接二进制文件
  5. 点击“+”按钮
  6. 选择您的框架

答案 3 :(得分:0)

请将AVFoundation框架添加到您的项目中。我认为您应该添加<AVFoundation/AVFoundation.h>以及<AudioToolbox/AudioToolbox.h>