【问题标题】:SystemSoundID Stopping SoundsSystemSoundID 停止声音
【发布时间】:2012-07-14 22:03:42
【问题描述】:

在我的应用程序中,我将按钮设置为键盘。每个按钮的作用类似于钢琴键,您触摸按钮,按住时声音会播放,松开时声音会停止。对于这种方法,我使用了两个 IBAction。一种用于 Touch Down(声音播放)和 Touch Up Inside(声音停止)。我正在使用 SystemSoundID 播放声音,因为 AVAudioPlayer 有延迟播放。唯一的问题是,当我按住按钮时,声音播放正常,但一旦我松开触摸,我的应用程序就会崩溃。以下是我的代码:

.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);
 }

【问题讨论】:

  • 我实际上没有将 ARC 合并到我的项目中。有什么方法可以停止声音并防止我的应用程序崩溃?究竟为什么我的应用程序崩溃了?

标签: ios xcode audio system-sounds crash


【解决方案1】:

我相信您将 SystemSoundID 错误地视为对象。它只是一个整数。

如果您查看 AudioServicesPlaySystemSound 的声明,请注意它的参数是 SystemSoundID 而不是 SystemSoundID *

void AudioServicesPlaySystemSound (
   SystemSoundID inSystemSoundID
);

因此,如果您只是将标题中的SystemSoundID *soundID 更改为SystemSoundID soundID,我相信它应该可以工作。

编码愉快。

【讨论】:

    猜你喜欢
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多