AVAudioPlayer - Müssen Sie eine Eigenschaft erstellen, damit sie funktioniert? (Xcode)

Dies ist der Code, den ich jetzt verwende und der nicht funktioniert (nichts passiert, wenn ich die Taste drücke, die diese Methode aufruft). Zuvor hatte ich eine Eigenschaft für AudioPlayer und sie funktionierte (alle AudioPlayer unten waren offensichtlich self.audioPlayer). Das Problem war, dass wenn ich versuchte, den Sound zweimal abzuspielen, der erste Sound beendet wurde.

Das ist nicht gut, weil ich ein Soundboard mache und möchte, dass sich Sounds überlappen können. Ich dachte, ich könnte AudioPlayer einfach als lokale Variable anstelle einer Eigenschaft definieren und alles wäre in Ordnung, aber jetzt funktioniert der Sound überhaupt nicht mehr und ich kann nicht herausfinden, warum. In allen Tutorials, die ich für AVAudioPlayer gefunden habe, wird eine Eigenschaft erstellt, aber niemand erklärt, warum. Wenn dies nicht funktioniert, welche Alternativen habe ich, um Sounds zu erzeugen, die sich überlappen können?

- (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];
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage