Мое приложение падает, когда я касаюсь определенной кнопки - PullRequest
0 голосов
/ 31 марта 2011

Вот заголовок для моей кнопки.

IBOutlet UIButton *buttonOneOne;

}

- (IBAction)buttonOneOne:(id)sender; 

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

Это то, что я положил в мой файл .m для него

- (IBAction)buttonOneOne:(id)sender {

    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"95" ofType:@".wav"];

NSError *activationError = nil;
NSError *audioPlayerInitError = nil;
[[AVAudioSession sharedInstance] setActive: YES error:&activationError];

NSURL *newURL = [NSURL fileURLWithPath:soundFilePath];
AVAudioPlayer *musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:newURL error:&audioPlayerInitError];

[musicPlayer prepareToPlay];
[musicPlayer setVolume:.8];
[musicPlayer setNumberOfLoops:-1]; // -1 means play indefintely
[musicPlayer setDelegate: self];
[musicPlayer play];

}

почему происходит сбой?

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter' означает, что файл, на который вы ссылаетесь, не может быть найден.

Вы не должны использовать точку при указании расширения файла.

Изменить ofType:@".wav"
на ofType:@"wav"

Ссылка класса NSBundle

0 голосов
/ 31 марта 2011

Вы должны опубликовать какой-нибудь консольный вывод (возможно, трассировку стека), это помогло бы нам НАМНОГО больше.

Возможные причины сбоя, которые я вижу из этого кода:

  1. Была ли synthesize ваша кнопка после удаления @property для нее?

  2. Существует ли 95.wav в вашем проекте XCode (вы импортировали его)?

  3. Вы используете Interface Builder?Если это так, проверьте ваш проект IB на наличие старых IBOutlets и IBActions, так как после переименования функции или чего-то еще вы обязаны получить элементы интерфейса, указывающие на старый код.

...