来自CDSoundEngine _testGetGain的EXC_BAD_ACCESS突然间?

时间:2014-10-11 21:11:51

标签: ios cocos2d-iphone

我在这里完全失败..我一直在使用iOS7的模拟器中运行我的OCUnit测试,没有任何问题。几天前,每当我运行我的应用程序或运行测试时,我都会从CocosDenshion.m中的行获得EXC_BAD_ACCESS:

ALuint testSourceId = _sources[0].sourceId;

疯狂的是,我很久以前试过检查以前的提交,我在模拟器中跑得很好,现在他们也在这条线上崩溃了。我只能在iOS设备上构建我的应用程序或运行测试。我没有升级任何东西,我尝试清理甚至删除〜/ Library / Developer / Xcode中的派生数据文件夹......

我无法理解为什么这会突然成为一个问题。

我看到其他人遇到同样的问题:http://forum.cocos2d-swift.org/t/exc-bad-access-cdsoundengine-ios7-simulator/11713/2

然而,他们声称这与ios7模拟器有关,正如我所说,直到现在我一整年都没有遇到任何问题。

更新

问题显然来自_initOpenAL方法..当它发生时:

context = alcCreateContext(newDevice, 0);

返回nil ....为什么哦为什么突然之间没有任何理由为零?

2 个答案:

答案 0 :(得分:1)

我也遇到了同样的问题。发现因为安装了Splashtop Streamer的软件。 Splashtop Streamer构建了开源软件soundflower。

在系统偏好设置中,声音输出为Soundflower。您需要更改内置扬声器(内置)。

答案 1 :(得分:0)

在Cocos2d-x 3.6中播放声音时,我突然遇到同样的问题。从2011年以来没有变化的代码。 这是一个可怕的可怕的kludge,但至少它有点让你继续前进:

东西:

#include "TargetConditionals.h"
#if TARGET_IPHONE_SIMULATOR
    return;
#endif

因此它是testGetGain(CocosDenshion.m)函数的顶部看起来像:

- (void) _testGetGain {
    float testValue = 0.7f;
    #include "TargetConditionals.h"
    #if TARGET_IPHONE_SIMULATOR
        return;
    #endif

这基本上会关闭模拟器上的声音,但至少你可以继续测试你的其他代码。

我对这款kludge不满意,但至少当你升级到更新的cocos2d-x应该解决这个问题时,kludge将被抹去。我怀疑这在iOS模拟器中完全是一个问题。