내 응용 프로그램의 모든 버튼에 사용자 정의 클릭 사운드를 추가하려고합니다. 나는 그 안에 다음 코드로있는 UIButton에 대한 클래스 범주를 만들었습니다ARC가있는 클래스 카테고리의 AVAudioPlayer
NSURL *soundURL = [NSURL fileURLWithPath:[[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:@"Tock" ofType:@"aiff"]];
NSError *error;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];
if(audioPlayer == nil){
NSLog(@"%@", [error description]);
} else{
[audioPlayer play];
}
모든이가에서 실행됩니다 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
그러나 내가 거기에 이해하는 ARC와 공통의 문제에서 (내가 이십 기가 바이트 사용). audioPlayer 객체는 사운드가 재생되기 전에 해제 된 것 같습니다. 나는 또한 AudioServicesPlaySystemSound();
을 보았다. 하지만 지금은 응용 프로그램에서 볼륨 컨트롤러가 필요하고 앱을 종료하지 않고 시스템 볼륨을 변경할 수있는 방법이 없기 때문에 현재로서는 나에게 대안이 아닙니다.
제 질문은 : UIButton 클래스 범주에서 내 audioPlayer 개체에 대한 강력한 참조를 만들 수있는 방법이 있습니까? 또는이 작업을 수행하는 다른 방법이 있습니까?
어쩌면 연관된 객체입니까? –
매력처럼 작동했습니다! 그냥 내 질문에 대한 답변으로 올려 그것을 받아 들일거야. –