AudioToolbox 库 AVAudioPlayer 中的内存泄漏

Posted

技术标签:

【中文标题】AudioToolbox 库 AVAudioPlayer 中的内存泄漏【英文标题】:memory leak in AudioToolbox library AVAudioPlayer 【发布时间】:2011-02-06 19:29:25 【问题描述】:

AVAudioPlayer 对象是否存在内存引导问题?在模拟器中使用 AVAudioPlayer 时出现内存泄漏。我如何创建 AVAudioPlayer 并不重要。我用过initWithContentsOfURLInitWithData。下面是代码的sn-p。完整项目@Github https://github.com/docchang/MemoryLeakAVAudioPlayer

NSError *error;
NSURL *playerURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Bell" ofType:@"m4a"]];   
self.playerWithURL = [[AVAudioPlayer alloc] initWithContentsOfURL:playerURL error:&error];
if (!playerWithURL) 
    NSLog(@"no %@.%@: %@",@"Introduction2", @"m4a", [error localizedDescription]);  

playerWithURL.volume = 0.9f;
playerWithURL.numberOfLoops = 0;
[playerWithURL play];

但是在设备上测试它时没有内存泄漏。这个问题开始倾向于与 AudioToolBox 库有关,但只是想与 *** 人员确认一下。

【问题讨论】:

【参考方案1】:

我在使用 AVAudioPlayer 时遇到了同样的内存泄漏。我在网上看到过一些关于 AVAudioPlayer 和 VideoPlayer 库发生类似泄漏的帖子。这似乎是库本身的问题(怪苹果):

    iPhone: OpenAL & AudioToolbox leak https://appcelerator.lighthouseapp.com/projects/32238/tickets/1992-ios-strange-behavior-and-intermittant-mem-leak-on-embedded-video-test-case

编辑:当目标在设备上运行时,泄漏也消失了。

【讨论】:

【参考方案2】:

刚刚进行了测试,因为我遇到了同样的问题。当使用 AVAudioPlayer 播放声音时,Instruments 在应用程序启动时显示泄漏。它在开始时只注册过一次。之后产生的声音没有进一步泄漏。

当我使用 Instruments 在我的 iPhone 上运行相同的应用程序构建时,根本没有泄漏。

我正在运行 iOS 11.2.5,Xcode 部署目标是 11.0

看起来这只是一个 Xcode 错误,但可能与 MacOS 有关。

【讨论】:

以上是关于AudioToolbox 库 AVAudioPlayer 中的内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

Xcode - AudioToolbox/AudioToolbox.h 文件未找到

RubyMotion 未加载 AudioToolbox 框架

降低 AudioToolbox 播放的音量

iPhone - AudioToolbox 和录音

iOS6 中的 AudioToolBox 泄漏?

如何使用 AudioToolbox 框架读取音频文件?