我坚持就有关AVAudioPlayer一些奇怪的内存泄漏问题,我需要努力来考虑一切后的帮助。
这是问题的简短描述 - 代码之后出现。 我初始化我的球员,并开始播放音轨无限循环(和无限循环或一个时间播放未改变问题)。 音乐开始几秒钟后,我切换到另一声轨,因此我创建一个新的播放器,对其进行初始化,释放旧的(这是玩),然后设置到位的新的和播放。
在那个时间点(之后我称之为新的播放器 - [Player播放])我得到了内存泄漏(3.5KB的)。
我试过如下:
停止老玩家,然后释放它 - 没有影响
释放播放器播放指令之后 - 没有开始播放
松开两倍老玩家 - 崩溃
当我创建和播放的第一个球员内存泄漏不会发生!
此外,在参考它说,“玩”是异步,因此它很可能通过增加1引用计数,但是在这种情况下,为什么没有[播放器停止]帮助?
谢谢,
以下是关于如何使用它的代码的某些部分:
- (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;
}