Storm Sim делает это с AVAudioPlayer, который, безусловно, является самым простым методом.Вы можете вызвать prepareToPlay для каждого из объектов игрока, а затем запустить их позже, чтобы не было никакой задержки.Я также использую пустой 1-секундный аудиопроигрыватель в вечном цикле для поддержания обратного отсчета deviceTime, поэтому вы можете использовать playAfter, чтобы в будущем задать конкретное deviceTime, чтобы все семплы воспроизводились синхронно или со смещением относительно друг друга (deviceTimeтолько галочки, если есть какой-то звук воспроизведения).AVAudioPlayerDelegate прервал / возобновил события и завершил воспроизведение, чтобы вы могли получать уведомления о происходящем.
Однако имеется только один аппаратный декодер MP3 / AAC, поэтому остальные три будут использовать процессор (и, следовательно, батарею), выполняющийрасшифровка.Если вы хотите продлить срок службы батареи, используйте файлы CAF в IMA4 @ 44100.Это примерно 1/4 размера необработанных WAV-файлов, поэтому он не так хорош, как MP3, но производительность намного лучше, особенно если вы используете много маленьких звуковых дорожек.Если вы используете голосовую связь, вы можете получить гораздо меньшую точность воспроизведения и разбить файлы еще больше.Afconvert в терминале может помочь вам получить ваши исходные файлы в формате CAF (вы должны использовать файлы CAF независимо от кодировки).