2012-01-02 2 views
2

어떤 이유로 든 AVAudioPlayer으로 사운드를로드하는 데 문제가 있습니다. 내 iPad 장치에서 테스트 중입니다.AVAudioPlayer가 사운드를로드하지 않습니다.

내 코드는 상당히 직설적이며 멋진 것은 아닙니다. 프레임 워크를 가져오고, 위임을 구현합니다. 내 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 초 동안 오디오 클립을들을 수 있습니다. 즉, 내 앱이로드되고 2 초 동안 오디오가 들리면 알림이 팝업되고 오디오가 끊깁니다.

따라서 AVAudioPlayer 코드가 다소 효과적으로 보입니다.

무슨 일이 일어나고 있는지, 어떻게하면 오디오를 재생할 수 있을지에 대한 아이디어가 있습니까?

답변

11

문제는 ARC를 사용하고있어서 변수가 범위를 벗어날 때 AVAudioPlayer가 할당 해제된다는 것입니다. 변수 theAudio을 인스턴스 변수로 선언하고 viewDidLoad에 할당해야합니다. 그래서, 당신의 .H 파일 :

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

그런 다음, 당신이있는 viewDidLoad에 theAudio을 할당 행에서 AVAudioPlayer * 제거하기. 이렇게하면보기 컨트롤러가 오디오 플레이어를 유지하게되어 재생 전에 플레이어의 할당이 해제되지 않습니다.

관련 문제