Утечка памяти AVAudioPlayer

Используя Ubuntu 12.04 + XFCE4.10 (от ppa). У меня также была эта проблема. ЗАФИКСИРОВАННЫЙ (вид прочь): меню стало видимым, когда я отключил составление композита дисплея. (Главное меню-> Настройки-> менеджер по Настройкам-> Тонкие настройки Менеджера окон-> Наборщик-> Включает составление композита дисплея.

6
задан Adi 29 August 2009 в 22:54
поделиться

3 ответа

Насколько я видел, ваш код мне кажется нормальным, так что, возможно, где-то есть код, который вызывает проблему.

Я скажу, что вы используете своего рода странная идиома. Вместо того, чтобы сохранять при создании и выпуске на установке, я бы сделал что-то вроде этого:

    // new players will always be created autoreleased.
    AVAudioPlayer   *player = [[(AVAudioPlayer*) [AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&error] autorelease];

- (void) setAudioPlayer : (AVAudioPlayer *) player 
{
  if (Player)
  {
      if ([Player isPlaying] || Repeat)  // The indication was off???
            [Player stop];
        [Player release];
  }
  Player = [player retain];
}

Таким образом, вы сохраняете только объекты «player», когда они действительно поступают в ваш метод setAudioPlayer, что может облегчить отслеживание.

Также убедитесь, что утечка действительно происходит из-за объекта AVAudioPlayer. Инструменты должны иметь возможность проверить это за вас.

0
ответ дан 11 December 2019 в 00:41
поделиться

Вот способ создания AVAudioPlayer без утечки памяти. См. Эту страницу для объяснения .

Я подтвердил в своем приложении, что это на 100% устранило мои утечки AVAudioPlayer.

- (AVAudioPlayer *)audioPlayerWithContentsOfFile:(NSString *)path {
    NSData *audioData = [NSData dataWithContentsOfFile:path];
    AVAudioPlayer *player = [AVAudioPlayer alloc];
    if([player initWithData:audioData error:NULL]) {
        [player autorelease];
    } else {
        [player release];
        player = nil;
    }
    return player;
}
7
ответ дан 11 December 2019 в 00:41
поделиться

Try adding MediaPlayer.framework to your project

-2
ответ дан 11 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: