Использование аудиоустройства RemoteIO может потребовать наличия отдельной очереди данных (fifo или циклический буфер) вне обратного вызова аудиоустройства, которая может предварительно буферизовать достаточное количество аудиоданных из файла, считанного перед обратным вызовом рендеринга аудиоустройства, для встречаются худшие задержки. Затем обратному вызову рендеринга нужно только быстро скопировать аудиоданные, а затем обновить флаг только для записи, который указывает, что аудиоданные были использованы.
Альтернативой, встроенной в iOS, является использование API Audio Queue, который выполняет предварительную буферизацию для вас. Это позволяет вашему приложению заблаговременно заполнить несколько больших звуковых буферов в главном цикле выполнения. Вам по-прежнему необходимо предварительно буферизовать достаточно данных, чтобы обеспечить максимальный размер файла, сети, блокировки или других задержек.
Другая стратегия состоит в том, чтобы иметь альтернативные аудиоданные для подачи обратного вызова рендеринга в режиме реального времени, если чтение файла или сети не поддерживалось, например, быстрое создание аудиобуфера, который сужается (и затем сужается, когда реальный) данные начинают поступать снова).