سؤال

قمت بتهيئة متغير Ivar AvaudioPlayer، واللعب والمحاولة إطلاق ذاكرته. بعد خط الإصدار، لا يتم تعيينه إلى 0x0. بعد خط NIL لا يتغير إلى 0x0. هل يتطلب Avaudioplayer شيئا خاصا لإطلاق سراح ذاكرته؟

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;
هل كانت مفيدة؟

المحلول

نحن سوف،

يلعب Avaudioplayer الملفات الصوتية بشكل غير متزامن. يجب ألا تحرير المشغل بعد بدء التشغيل، فقد يؤدي ذلك إلى بعض الخطأ المتعلق بالذاكرة وقد لا يلعب ملف الصوت الخاص بك أيضا.

يجب أن تحرير المشغل عبر Avaudioplayerdelegate. لمزيد من التفاصيل، يمكنك التحقق من ذلك الإجابة أيضا.

أتمنى أن يساعدك هذا.

شكرا،

Madhup.

نصائح أخرى

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

}

هنا، يتم الإعلان عن AppSoundPlayer في ملف الرأس كما

AVAudioPlayer *appSoundPlayer;

إنه إعلان تم إعلانه وتوليفه، كما صدر في طريقة Deallec

[appSoundPlayer release];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top