AVAudioPlayer와 관련된 이상한 메모리 누수 문제가 발생했습니다. 마음에 드는 모든 것을 시도한 후에 도움이 필요합니다.AVAudioPlayer 메모리 누수
다음은 문제에 대한 간단한 설명입니다. 바로 뒤에 코드가 나타납니다. 무한 루프에서 플레이어를 초기화하고 사운드 트랙을 재생하기 시작합니다 (그리고 끝없는 반복 또는 한 번 재생해도 문제가 변경되지 않음). 음악을 시작한 후 몇 초 후에 다른 사운드 트랙으로 전환하므로 새 플레이어를 만들고 초기화 한 다음 재생중인 이전 플레이어를 릴리스 한 다음 새 플레이어를 설정하고 재생합니다.
그 시점 (새 Player - [Player play]를 호출 한 직후)에 메모리 누수가 발생합니다 (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;
}
을 :감사합니다, 여기에
내가 그것을 사용하는 방법에 대한 코드의 일부입니다
답해 주셔서 감사합니다. 예 - 인스트루먼트가있는 AVAudioPlayer인지 확인했습니다. 방법에 관해서 - 나는 실제로 다른 트랙을 저장하고 일치하는 이름으로 그리고 (동일한 트랙을 여러 번 다운로드하는 대신) 재생하지 않기 때문에 재사용하기 때문에 이것을 사용합니다. "Alloc"을 호출 한 후 호출자로부터 Player를 얻은 것을 알고 있기 때문에, 내가 잘못 이해하지 않는 한 이미 보존되었다는 것을 알고 있습니다. – Adi