Frage

Ich initialisieren Sie ein Ivar AVAudioPlayer Variable, spielen und den Versuch seinen Speicher freizugeben. Nach der Release Linie, wird eingestellt nicht auf 0x0. Nach der Nulllinie ändert es nicht auf 0x0. Hat AVAudioPlayer erfordern etwas Besonderes seinen Speicher freizugeben?

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: @"mysound" ofType: @"aif" inDirectory:@"/"]] error: &err];
audioPlayer.numberOfLoops = 0;
audioPlayer.volume = .5;
[audioPlayer prepareToPlay];
[audioPlayer play];
[audioPlayer release];
audioPlayer = nil;
War es hilfreich?

Lösung

Nun,

AVAudioPlayer spielt die Audio-Dateien asynchron. Sie sollten nicht die Spieler frei, nachdem Sie anfangen zu spielen, ist es bis zu einem gewissen Speicher bezogener Fehler und Ihre Audio-Datei möglicherweise nicht spielen.

führen

Sie sollten den Player über avaudioplayerdelegate freigeben. Für weitere Informationen können Sie diese zu beantworten.

Hope, das hilft.

Danke,

Madhup

Andere Tipps

 - (IBAction) playaction {

        NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"songname" ofType:@"mp3"];
        NSURL *newURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
        self.soundFileURL = newURL;
        [newURL release];
        [[AVAudioSession sharedInstance] setDelegate: self];
        [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];

    // Registers the audio route change listener callback function
    AudioSessionAddPropertyListener (
                                     kAudioSessionProperty_AudioRouteChange,
                                     audioRouteChangeListenerCallback,
                                     self
                                     );

    // Activates the audio session.

    NSError *activationError = nil;
    [[AVAudioSession sharedInstance] setActive: YES error: &activationError];

    AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: soundFileURL error: nil];
    self.appSoundPlayer = newPlayer;
    [newPlayer release];
    [appSoundPlayer prepareToPlay];
    [appSoundPlayer setVolume: 1.0];
    [appSoundPlayer setDelegate: self];
    [appSoundPlayer play];

}

Hier appSoundPlayer ist in der Header-Datei als

deklariert
AVAudioPlayer *appSoundPlayer;

Es ist Eigenschaft deklariert und synthetisiert, auch bei dealloc Verfahren freigegeben, wie

[appSoundPlayer release];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top