Objective c 使用播放声音的相同按钮停止声音

Objective c 使用播放声音的相同按钮停止声音,objective-c,cocoa-touch,ios,Objective C,Cocoa Touch,Ios,非常简单,我使用一个按钮生成一个随机数,然后使用一个开关/盒,它可以设置图像动画并播放声音。我的问题是,当你再次按下按钮时,之前播放的声音不会停止,并且声音重叠 代码如下: - (IBAction) pushme: (id) sender{ int random = (arc4random()%10); switch (random) { case 0: { [ANIMATION NUMBER 0] NSString *path = [

非常简单,我使用一个按钮生成一个随机数,然后使用一个开关/盒,它可以设置图像动画并播放声音。我的问题是,当你再次按下按钮时,之前播放的声音不会停止,并且声音重叠

代码如下:

- (IBAction) pushme: (id) sender{
int random = (arc4random()%10);
switch (random) {
    case 0:  {
            [ANIMATION NUMBER 0]

            NSString *path = [NSString stringWithFormat:@"%@%@",[[NSBundle mainBundle] resourcePath],@"/sound0.wav"];
            SystemSoundID soundID;
            NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
            AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID);
            AudioServicesPlaySystemSound(soundID);
        }
        break;
    case 1:  {
            [ANIMATION NUMBER 1]

            NSString *path = [NSString stringWithFormat:@"%@%@",[[NSBundle mainBundle] resourcePath],@"/sound1.wav"];
            SystemSoundID soundID;
            NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
            AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID);
            AudioServicesPlaySystemSound(soundID);
    } break; //Lots more cases after this one
我知道这不是最好的方法,反复声明相同的变量。
但是有没有办法在它播放另一个之前阻止它呢

我刚刚找到了我自己问题的答案

我所做的是

  • 声明
    SoundSystemID soundID在标题中
    
  • 在生成随机数之前添加此行:
    AudioServicesDisposeSystemSoundID(soundID)
  • 请记住,如果要再次播放声音,则需要在处理资源后再次加载该资源


    无论如何,谢谢你们。

    我刚刚找到了我自己问题的答案

    我所做的是

  • 声明
    SoundSystemID soundID在标题中
    
  • 在生成随机数之前添加此行:
    AudioServicesDisposeSystemSoundID(soundID)
  • 请记住,如果要再次播放声音,则需要在处理资源后再次加载该资源


    无论如何,谢谢你们。

    哈哈,我刚刚找到了我自己问题的答案。太好了!请将答案张贴在这里,以便其他人可以从您的研究中受益。@Nicolas:对不起,我的意思是将其作为“答案”添加到下面。这样,问题就不会在搜索中显示为未回答。谢谢@JoshCaswell我不能回答,因为作为一个新用户,我不能在8小时前回答。@JoshCaswell,你能添加它吗?哈哈,我刚刚找到了我自己问题的答案。太棒了!请将答案张贴在这里,以便其他人可以从您的研究中受益。@Nicolas:对不起,我的意思是将其作为“答案”添加到下面。这样,问题就不会在搜索中显示为未回答。谢谢@JoshCaswell我不能回答,因为作为一个新用户,我不能在8小时前回答。@JoshCaswell,你能添加它吗?