2009-11-26 4 views
0

나는 이미 여러 가지 소리가 나는 간단한 iPhone 앱을 가지고있다. 그러나 특히 그렇지 않습니다. I가 해킹 한 코드 블록은 다음과 같습니다AVAudioPlayer를 통해 사운드가 재생되지 않는 이유를 디버깅하는 방법은 무엇입니까?

NSString *soundPath2 = [[NSBundle mainBundle] pathForResource:@"gameover" ofType:@"wav"]; 
NSURL *soundFileURL2 = [NSURL fileURLWithPath:soundPath2]; 
NSError *err; 
AVAudioPlayer *sound2 = [[[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL2 error:&err] autorelease]; 
NSLog(@"Error: %@", [err description]); 
NSLog(@"Duration: %f ", [sound2 duration]); 
BOOL b = [sound2 play]; 
NSLog(@"Play Bool: %d", b); 

콘솔 오류가 null 부울 반환 사실을 보여줍니다, 심지어 기간은 올바른입니다! 그러나 놀이는 아무것도하지 않습니다. 내가 "게임 오버"를 다른 소리 (단순한 경고음)로 바꾸면 모두 괜찮습니다.

놀림을 얻는 것이 좋겠지 만, 어떤 오류 조건 등을 이해하기 위해 고민 중입니다. 1) 실패했는지, 2) 그 이유를 확인할 수 있습니다.

소리는 질문은 http://wdr1.com/gameover.wav에 있습니다.

답변

4

문제는 AVAudioPlayer를 자동 리 릴리스하지 않아야한다는 것입니다. play 메서드는 비동기 적으로 발생하고 플레이어가 자동 리사이징되면 아무 것도 붙잡고 죽지 않습니다. 플레이어가 완료되면

당신은 위임에 재생 오디오 플레이어를 출시한다 : 그것을했다

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)audioPlayer successfully:(BOOL)flag 
+0

을! 감사. – Bill

+1

나는 A.R.C.를 사용하는 이상한 것을 가지고 있었다. OS가 내 개체를 조기에 자동으로 내 놓았습니다. 이것은 나를 미치게했다! !! 나는 그것을 재생하기 위해 캐시 (사전)에 플레이어를 저장 결국. – Olie

관련 문제