1

这是我看到内存泄漏的代码(启用了 ARC)。

请帮我解决这个问题。

- (void) setMusic
{      
     /*
     Initialise and set the music for the game.
     */

 NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"actionMusic" ofType:@"caf"]];
NSError *error = nil;
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
if (!error)
{
    _audioPlayer.delegate = self;
    if(_musicFlag)
    {
        [_audioPlayer play];
    }
    [_audioPlayer setNumberOfLoops:INT32_MAX];
}

error = nil;
url =nil;

url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"pew" ofType:@"wav"]];
_moveMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];

if (!error)
{
    _audioPlayer.delegate = self;
}

error = nil;
url =nil;


url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Won" ofType:@"wav"]];
_winningMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];

if (!error)
{
    _winningMusic.delegate = self;
    [_winningMusic setNumberOfLoops:1];
}

}

这是泄漏的详细信息 在此处输入图像描述

4

1 回答 1

0

我找到了泄漏的答案。

此泄漏是由于AVAudioPlayerApple 尚未修复的基础类造成的。

因此使用AVAudioPlayer基础类会导致泄漏。

检查此链接以获取更多详细信息

于 2013-02-26T11:21:46.090 回答