【问题标题】:Cocos2d memory leaks : SimpleAudioEngineCocos2d 内存泄漏:SimpleAudioEngine
【发布时间】:2013-03-31 20:43:03
【问题描述】:

Cocos2D iphone 游戏中出现大量内存泄漏。我使用这些调用来播放音乐和效果。

[[SimpleAudioEngine sharedEngine]  preloadEffect:kSoundTap];

[[SimpleAudioEngine sharedEngine] playBackgroundMusic:kMusic_LaunchScreen] ;

[[SimpleAudioEngine sharedEngine] playEffect:kSound_GettingPowerUp] ;

有什么问题或需要释放什么吗?在 iPad3 中,如果我玩的时间更长,会出现很多性能问题……在乐器中,只有这些泄漏被发现。我该如何解决这个问题?

这是另一个similar thread,但没有公认的解决方案。我该如何克服这个问题?

【问题讨论】:

  • 您能打开查看/扩展详细信息并检查调用堆栈吗?对于这些报告的泄漏,是否有任何与您的代码相关的内容?
  • 在播放完您的声音后尝试拨打[SimpleAudioEngine end] 并检查乐器是否不断报告泄漏。注意:这只是为了测试和收集更多信息——我不建议你这样做来修复泄漏。
  • 如果我放置这两行然后崩溃: [[SimpleAudioEngine sharedEngine] playEffect:kSoundTap] ; [SimpleAudioEngine 结束];
  • end 应该在你的声音播放后执行——如果你有兴趣测试的话。另一方面,如果您觉得这很复杂,您可以简单地创建一个测试项目并播放这两种声音,用乐器检查是否存在泄漏......
  • 我刚做了一个样品,把单独的按钮结束。但同样的泄漏是一样的......

标签: cocos2d-iphone simpleaudioengine


【解决方案1】:

不要保留或释放 AVAudioPlayer 对象。相反,您必须 end 您的会话。根据我在突出显示行的第二个屏幕截图中的仪器可以看出,事件是“发布”,但根据文档 AVAudioPlayer 事件不应被发布(或保留)。

【讨论】:

    猜你喜欢
    • 2011-07-11
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    相关资源
    最近更新 更多