2012-07-16 1 views
0

내 응용 프로그램에는 키보드로 설정되는 단추가 있습니다. 각 버튼은 피아노 건반과 유사하게 작동합니다. 피아노 건반을 누르고 소리가 들리면 연주하지만 놓으면 멈 춥니 다. 이 방법에서는 두 가지 IBActions를 사용합니다. 터치 다운 (사운드 재생) 및 터치 업 인사이드 (사운드 정지)를위한 하나. AVAudioPlayer에 지연된 재생이 있으므로 사운드 재생에 SystemSoundID를 사용하고 있습니다. 유일한 문제는 버튼을 누르고있을 때 소리가 잘 들린다는 것입니다. 일단 터치를 놓으면 앱이 다운됩니다. 난 당신이 개체로 잘못 SystemSoundID을 치료하고 생각SystemSoundID 소리 멈춤

- (IBAction)ASoundStart:(id)sender { 
    NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"P1:4t" ofType:@"mp3"]; 
    AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:soundFile], &soundID); 
    AudioServicesPlaySystemSound(soundID); 
    [soundFile release]; 
} 

- (IBAction)ASoundStop:(id)sender { 
    AudioServicesDisposeSystemSoundID(soundID); 
} 
+0

실제로 내 프로젝트에는 ARC가 통합되어 있지 않습니다. 소리를 멈추고 내 앱이 충돌하는 것을 막을 수있는 방법은 없나요? 어째서 내 응용 프로그램이 정확히 충돌하지 않는 이유는 무엇입니까? –

답변

2

:

.H 파일 :

SystemSoundID *soundID; 

하는 .m 파일 다음은 내 코드입니다. 그것은 단순히 정수입니다.

당신이 AudioServicesPlaySystemSound의 선언을 살펴 경우는 인수가 SystemSoundID이다 그건 그 통지하고 방금 SystemSoundID soundID에 헤더에 SystemSoundID *soundID을 변경하면되지 SystemSoundID *

void AudioServicesPlaySystemSound (
    SystemSoundID inSystemSoundID 
); 

그래서 나는 그것이 작동합니다 생각합니다.

해피 코딩.