2010-02-16 2 views
0

Я просто пытаюсь получить простой mp3-плеер. Я получаю сообщение об ошибке, которое я действительно не понимаю.Проблема с воспроизведением звука Iphone

У меня есть экземпляр AVAudioPlayer объявлен в моей час файл, и я синтезировать его в моем файле .m ....

Undefined symbols: 
    ".objc_class_name_AVAudioPlayer", referenced from: 
     [email protected][email protected][email protected] in PromoTabOptionHome.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

Мой час файл определяется как этот

#import <UIKit/UIKit.h> 
#import <AVFoundation/AVFoundation.h> 


@interface PromoTabOptionHome : UIViewController { 

    UIButton *playPause; 
    AVAudioPlayer* audioPlayer; 
    NSMutableString *audioPath; 
    BOOL playing; 

} 

@property(nonatomic,retain)UIButton *playPause; 
@property(nonatomic,retain)NSMutableString *audioPath; 
@property(nonatomic,retain)AVAudioPlayer *audioPlayer; 
-(id)initWithTabBar; 
@end 

И мой файл реализации, как это

#import "PromoTabOptionHome.h" 
@implementation PromoTabOptionHome 

@synthesize playPause; 
@synthesize audioPath; 
@synthesize audioPlayer; 

-(id) initWithTabBar { 
    if ([self init]) { 
     self.tabBarItem.image = [UIImage imageNamed:@"home.png"]; 

     // set the long name shown in the navigation bar 
     [email protected]"Nav Title"; 
    } 
    return self; 

} 


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    playPause = [UIButton buttonWithType:UIButtonTypeCustom]; 
    playPause.frame = CGRectMake(-20,280, 100,100); 
    [playPause setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal]; 
    [playPause addTarget:self action:@selector(buttonPushed:) 
      forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:playPause]; 

    playing=NO; 

    NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:audioPath, [[NSBundle mainBundle] resourcePath]]]; 

    NSError *error; 
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
    //audioPlayer.numberOfLoops = -1; 

    if (audioPlayer == nil) 
     NSLog([error description]); 
    else 
     [audioPlayer play]; 
} 

- (void) buttonPushed:(id)sender 
{ 
    NSLog(@"It works!"); 

    switch (playing) { 
     case NO: 
      playing=YES; 
       [playPause setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal]; 
      break; 
     case YES: 
      playing=NO; 
       [playPause setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal]; 
      break; 
     default: 
      break; 
    } 
} 

- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 


- (void)dealloc { 
    [super dealloc]; 
} 


@end 

ответ

1

Добавили ли вы AVFoundation рамки для вашего проекта?

Сделайте так, щелкнув правой кнопкой мыши группу Каркасы и нажмите кнопку Добавить> существующие рамки

+0

Я пробовал, но его не существует в системе> libary> frameworks. Я предполагаю, что я искал что-то по имени avfoundation.framework – dubbeat

+0

я нашел его здесь /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk/System/Library/Frameworks/UIKit.framework Странно, что x-код не показывает правильное местоположение по умолчанию? – dubbeat

+0

Структура должна появиться в выпадающем списке, если вы выберете все в верхней части. – FelixLam

0

Вы можете отсутствует упоминание о AVFoundation.framework в проекте. По умолчанию эта ссылка не добавляется. Вам нужно добавить AVFoundation.framework вручную.

  1. В групп и файлов -> расширить свой проект
  2. правой кнопкой мыши на Ссылка Binaries с библиотеками
  3. Выбрать Добавить
  4. Выберите Существующие рамочные -> Список существующий каркас всплыл
  5. Выбрать AVFoundation.framework
  6. Нажмите Добавить

Это должно решить проблему. Меня устраивает.

Смежные вопросы