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

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

Вот краткое описание проблемы - код появляется сразу после. Я инициализирую свой плеер и начинаю воспроизводить звуковую дорожку в бесконечном цикле (и бесконечный цикл или однократное воспроизведение не изменили проблему). Через несколько секунд после запуска музыки я переключаюсь на другую звуковую дорожку, поэтому создаю новый проигрыватель, инициализирую его, освобождаю старый (который воспроизводится), а затем устанавливаю новый на место и воспроизводю его.

В этот момент (сразу после того, как я позвоню новому игроку - [Play player]) я получаю утечку памяти (размером 3,5 Кб).

Я попробовал следующее:

Остановите старый плеер и затем отпустите его - никакого эффекта

Отпустите плеер сразу после инструкции воспроизведения - не начал играть

Отпустите дважды старый плеер - сбой

Утечка памяти НЕ происходит, когда я создаю и играю первым игроком!

Кроме того, в ссылке говорится, чтоиграть' является асинхронным и поэтому, вероятно, увеличивает счетчик ссылок на 1, но в этом случае, почему неt [Player stop] помочь?

Спасибо,

Вот некоторые части кода о том, как я его использую:}}}

- (void) loadAndActivateAudioFunction {
NSBundle        *mainBundle = [NSBundle mainBundle];
NSError         *error;
NSURL           *audioURL = [NSURL fileURLWithPath:[mainBundle pathForResource: Name ofType: Type]];
AVAudioPlayer   *player = [(AVAudioPlayer*) [AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&error];

if (!player) {
    DebugLog(@"Audio Load Error: no Player: %@", [error localizedDescription]);
    DuringAudioPrep = false;
    return;
}
[self lock];
[self setAudioPlayer: player];
[self ActivateAudioFunction];
[self unlock];

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

- (void) ActivateAudioFunction {
[Player setVolume: Volume];
[Player setNumberOfLoops: Repeat];    
[Player play];

DuringAudioPrep = false;

Ответы на вопрос(3)

Ваш ответ на вопрос