Iphone AVAudioPlayer';s方法';播放';在while循环中不起作用

Iphone AVAudioPlayer';s方法';播放';在while循环中不起作用,iphone,ios,avaudioplayer,Iphone,Ios,Avaudioplayer,我想用AVAudioPlayer在循环中播放声音,就像ios示例中的metronome应用程序一样。我有以下代码: BOOL continuePlaying = YES; while(continuePlaying){ [_audioPlayer play]; ...do some other stuff } 问题是,在第一次迭代中,声音只播放一次。在下一次迭代中,play方法似乎什么都不做。如果您能就可能出现的问题提出任何建议,我将不胜感激 PS:我知道avaudiopa

我想用
AVAudioPlayer
在循环中播放声音,就像ios示例中的metronome应用程序一样。我有以下代码:

BOOL continuePlaying = YES;

while(continuePlaying){

    [_audioPlayer play];
    ...do some other stuff
}
问题是,在第一次迭代中,声音只播放一次。在下一次迭代中,play方法似乎什么都不做。如果您能就可能出现的问题提出任何建议,我将不胜感激


PS:我知道
avaudiopayer
numberOfLoops
属性,但在这种情况下,我想在每次播放之间做一些其他事情,所以我必须使用一个循环(我想创建一个节拍器应用程序)。

不要在循环时播放,而是在声音播放结束时捕捉代理

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
你可以重新开始播放声音,做其他你想做的事情


在播放声音的情况下循环似乎不合逻辑,因为您正在启动多个播放,这不起作用,

请检查此代码,它对我有效:

dispatch_async(dispatch_get_global_queue(0, 0), ^{
   while (continuePlaying)
   {
       [player play];
       //do your stuffs here
   }
});

谢谢你的回复。我正在尝试创建一个节拍器应用程序,因此在这种情况下,在循环中播放声音是必要的(我刚刚将此信息添加到我的原始问题中)。感谢您的回复和代码。这很好,但我仍然不明白为什么调度解决了这个问题。您能解释一下为什么AVAudioPlayer不会像我在原始代码中预期的那样,在每次执行play方法时都播放声音吗?