SystemSoundID停止声音
问题描述:
在我的应用程序中,我将按钮设置为键盘。每个按钮的作用类似于钢琴键,您可以触摸按钮,当您按住时播放声音,但释放时会停止播放。对于这种方法,我使用了两个IBActions。一个用于Touch Down(声音播放)和Touch Up Inside(声音停止)。我使用SystemSoundID播放声音,因为AVAudioPlayer有延迟播放。唯一的问题是,当我按住按钮声音播放良好,但一旦我释放触摸我的应用程序崩溃。下面是我的代码:SystemSoundID停止声音
.h文件中:
SystemSoundID *soundID;
.m文件:
- (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);
}
答
我相信你正确治疗SystemSoundID为对象。它只是一个整数。
如果你看一看AudioServicesPlaySystemSound的声明,注意它的说法是SystemSoundID
,而不是SystemSoundID *
void AudioServicesPlaySystemSound (
SystemSoundID inSystemSoundID
);
所以,如果你只是在你的头改变SystemSoundID *soundID
到SystemSoundID soundID
我相信它应该工作。
快乐编码。
我其实没有将ARC纳入我的项目。任何方式来阻止声音,并防止我的应用程序崩溃?无论如何,为什么我的应用崩溃? – 2012-07-16 03:58:00