AVAudioPlayer: ¿debe crear una propiedad para que funcione? (Xcode)

Este es el código que estoy usando ahora y no funciona (no ocurre nada cuando presiono el botón que llama a este método). Anteriormente, tenía una propiedad para audioPlayer y funcionaba (todos los reproductores de audio a continuación eran self.audioPlayer, obviamente). El problema era que cuando intentaba reproducir el sonido dos veces, terminaba el primer sonido que se reproducía.

Esto no es bueno porque estoy haciendo una caja de resonancia y quiero que los sonidos puedan superponerse. Pensé que podría hacer de audioPlayer una variable local en lugar de una propiedad y todo estaría bien, pero ahora el sonido no funciona en absoluto y no puedo entender por qué. En todos los tutoriales que he encontrado para AVAudioPlayer, se crea una propiedad pero nadie explica por qué. Si esto no funciona, ¿qué alternativas tengo para hacer sonidos que puedan superponerse?

- (void)loadSound:(NSString *)sound ofType:(NSString *)type withDelegate:(BOOL)delegate {
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                     pathForResource:sound
                                     ofType:type]];

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
if (delegate) audioPlayer.delegate = self;
[audioPlayer prepareToPlay];

[audioPlayer play];
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta