2013-02-16 22 views
1

我是非常新的ios開發,並且我沒有真正承諾,但控制檯顯示的錯誤。IOS - 終止應用程序,由於未捕獲的異常'NSInvalidArgumentException無法識別的選擇器發送到實例0x7a9a2c0'

這是錯誤:

終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是: ' - [NVViewController播放:]:無法識別的選擇發送到實例0x7a9a2c0'

我把我的代碼下面,當我觸摸播放按鈕時發生錯誤。

#import "NVViewController.h" 

@implementation NVViewController 

@synthesize reproductor; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSError* error; 

    NSString* ruta = [[NSBundle mainBundle] pathForResource:@"BackgroundMusic" ofType:@"mp3"]; 
    NSURL* url = [[NSURL alloc] initFileURLWithPath:ruta]; 

    self.reproductor = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 

    [self.reproductor prepareToPlay]; 
} 

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

- (IBAction)playBackgroundMusic:(id)sender { 
    [self.reproductor play]; 
} 

- (IBAction)stopBackgroundMusic:(id)sender { 
    [self.reproductor stop]; 
} 
@end 

和標題。

@interface NVViewController : UIViewController 

@property (nonatomic,strong) AVAudioPlayer * reproductor; 

- (IBAction)playBackgroundMusic:(id)sender; 
- (IBAction)stopBackgroundMusic:(id)sender; 

@end 

謝謝。

+0

嘗試將self.reproductor = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];在playBackgroundMusic之前[self.reproductor play]; – 2013-02-16 07:02:43

+0

我會建議只是嘗試[複製播放];而不是自我。出於某種原因,您的代碼正在調用NIViewController(self)方法而不是AVAudioPlayer對象。 – 2013-02-16 07:19:37

+0

您應該從NVViewController放置也使用self.reproductor的代碼,因爲您可能將self.reproductor設置爲NVViewController對象。 – 2013-02-16 07:46:04

回答

1

代碼中的某處(其他地方),您在視圖控制器上調用Play:而不是playBackgroundMusic:。該錯誤消息明確指出,您已將Play:發送給NVViewController,而不是該消息。

相關問題