AVAudioPlayer导致内存泄漏?释放内存?

时间:2019-07-03 01:54:17

标签: objective-c xcode memory-leaks avaudioplayer

我的Xcode应用程序播放许多不同的音频文件。似乎有内存泄漏最终导致应用程序崩溃。我应该释放音频播放器的记忆吗?我需要什么额外的代码来释放这些?我大约有400个音频文件。

NSString *file1Path = [[NSBundle mainBundle] pathForResource:@"50"ofType:@"mp3"];
NSURL *file1URL = [[NSURL alloc] initFileURLWithPath:file1Path];
file1Player = [[AVAudioPlayer alloc] initWithContentsOfURL:file1URL error:nil];
[file1Player play];

我可以添加这段代码吗?

-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    [file1Player release];
    file1Player=nil;

}

1 个答案:

答案 0 :(得分:1)

您已建议添加[file1Player release]

如果您正在使用自动参考计数,则不仅没有必要,而且不允许这样做。但是,如果使用手动参考计数,则必不可少。但是请确保指定delegate中的AVAudioPlayer,否则将不会调用该方法。

如果您使用手动引用计数,建议您使用 shift + 命令 + B (或“产品”»“分析”)执行静态分析。特别是在手动引用计数代码中(甚至在ARC Objective-C代码中),此静态分析器是一个非常有用的工具。在解决了那里确定的所有问题之前,没有任何必要进行。

或者,按照您的建议,甚至更好,将您的人工参考计数项目转换为自动参考计数。