AVAudioPlayer не загружает звук - PullRequest
2 голосов
/ 03 января 2012

По какой-то причине у меня возникают проблемы с загрузкой звука с AVAudioPlayer.Я тестирую его на своем устройстве iPad.

Мой код довольно прост, ничего особенного.Каркас импортирован, делегат реализован.В моем viewDidLoad методе:

NSString *path = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"mp3"];
AVAudioPlayer *theAudio = [[AVAudioPlayer alloc]
                           initWithContentsOfURL:[NSURL fileURLWithPath:path]
                                           error:NULL];
[theAudio setDelegate:self];
[theAudio prepareToPlay];
[theAudio play];

Не удается воспроизвести аудио.Однако по стечению обстоятельств, когда сразу после этого отображается UIAlertView, я слышу первые 2 секунды воспроизведения аудиоклипа.То есть мое приложение загружается, я слышу две секунды звука, затем выскакивает предупреждение и отключает звук.

Так что, похоже, код AVAudioPlayer несколько работает.

Есть идеи о том, что происходит, и как я могу просто заставить звук воспроизводиться?

1 Ответ

11 голосов
/ 03 января 2012

Проблема в том, что вы используете ARC, и, следовательно, AVAudioPlayer освобождается, когда переменная выходит из области видимости. Вы должны объявить переменную theAudio как переменную экземпляра и назначить ее в viewDidLoad. Итак, в вашем .h файле:

@interface MyViewController : UIViewController {
    AVAudioPlayer *theAudio;
    ...
}
...
@end

Затем избавьтесь от AVAudioPlayer * из строки, в которой вы назначаете theAudio в viewDidLoad. Это приведет к тому, что ваш контроллер просмотра сохранит аудиоплеер, и, следовательно, предотвратит освобождение проигрывателя перед воспроизведением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...