Звук не играет XCode? - PullRequest
       0

Звук не играет XCode?

1 голос
/ 06 января 2012

Я пытаюсь воспроизвести звук при нажатии кнопки, которую я использую:

-(IBAction)sound {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Beat" ofType:@"wav"];
            AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
            theAudio.delegate = self;
            [theAudio play];
}

И;

#import <AVFoundation/AVAudioPlayer.h>

.h файл;

- (IBAction) sound;

Я что-то забыл?

Ответы [ 2 ]

2 голосов
/ 06 января 2012

У меня раньше была эта проблема, и она удивительно обманчива из-за нового способа работы ARC.

Вы создали Audio в методе "sound".Однако срок службы этого объекта длится только до выхода из метода.Таким образом, ARC уничтожает звук до того, как у него появится шанс воспроизвести звук.

Как ни странно, если вы делали это в pre-ARC, вы обнаружите, что ваш звук воспроизводится, но у вас есть памятьутечка, потому что Аудио не выпускается.Или вы можете освободить его, когда произойдет обратный вызов, но это нарушает некоторые принципы управления памятью, поэтому я не буду за него стоять.

Вам понадобится какой-то класс "Mixer", который обрабатывает/ сохраняется группы аудиоплееров.

1 голос
/ 24 февраля 2013

Попробуйте и убедитесь, что импортировали аудио-панель инструментов в ваш .h файл

CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"H1", CFSTR("WAV"), NULL);
if (soundFileURLRef){
CFStringRef url = CFURLGetString(soundFileURLRef);
}
UInt32 soundID;
AudioServicesCreateSystemSoundID)soundFileURLRef, &soundID);
AudioServicesPlaySystemSound(soundIB);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...