У меня есть серия коротких (1 секунд) звуковых клипов, которые мне нужно играть последовательно. Для этой цели разрабатывается класс. Я использую следующий код:iOS AVAudioPlayer Странное поведение
- (void) playClip: (NSData *)clipToPlay
{
NSError *error = nil;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData: clipToPlay error:&error];
audioPlayer.numberOfLoops = 0;
audioPlayer.volume = 1.0f;
[audioPlayer prepareToPlay];
if (audioPlayer == nil)
NSLog(@"%@", [error description]);
else
[audioPlayer play];
}
Как можно видеть, clipToPlay
содержит звуковой клип как NSData
. Поведение этого кода странно. Если я бегу в отладчике и установить точку останова в следующей строке:
[audioPlayer play];
клип играет, как и ожидалось - отладчик останавливается на линии, когда вы шаг через линию, клип отлично играет , Если, однако, я беру точку останова, она вообще не играет.
Сначала я попытался скопировать NSData
в файл с нуля, с точно таким же результатом. Я также скопировал clipToPlay
в другую переменную (используя копию, а не просто назначение указателя) с одинаковыми результатами (я думал, что, возможно, ClipToPlay куда-то клонился). Я не получаю сообщение об ошибке.
Я действительно зациклился на том, почему приостановление отладчика на методе воспроизведения приведет к тому, что это произойдет именно так. Любые предложения или идеи?
Благодарим вас за отправку решения! это помогло мне сегодня. –