У меня раньше была эта проблема, и она удивительно обманчива из-за нового способа работы ARC.
Вы создали Audio в методе "sound".Однако срок службы этого объекта длится только до выхода из метода.Таким образом, ARC уничтожает звук до того, как у него появится шанс воспроизвести звук.
Как ни странно, если вы делали это в pre-ARC, вы обнаружите, что ваш звук воспроизводится, но у вас есть памятьутечка, потому что Аудио не выпускается.Или вы можете освободить его, когда произойдет обратный вызов, но это нарушает некоторые принципы управления памятью, поэтому я не буду за него стоять.
Вам понадобится какой-то класс "Mixer", который обрабатывает/ сохраняется группы аудиоплееров.