我有一个抽象类,它将awch初始化为awakeFromNib方法中的全局变量Finch *引擎,如下所示:
engine = [[Finch alloc] init];
抽象类的子类都不会覆盖该方法。但是,每当我尝试我的程序时,Finch都会打印出“Finch:无法打开默认的OpenAL设备”。在调试器中。为什么Finch无法获得默认的OpenAL设备?据我所知,我正在做他们的代码示例中显示的所有内容。
答案 0 :(得分:1)
我刚遇到同样的问题。对我来说,这是通过在多个视图控制器中实例化Finch对象引起的。由于某种原因,第二个似乎取消了第一个,每当我试图播放声音时,我都会收到错误消息。
要解决这个问题,我只需在App Delegate中创建一个Finch对象,现在它在整个应用程序中都能正常运行。
希望这会有所帮助:)
答案 1 :(得分:0)
警告,如果要分配多个Finch类:
在FISoundEngine中,dealloc方法调用closeAudioDevice。这将关闭OpenAL音频设备。 您可能知道,整个应用程序中只存在一个OpenAL设备!
因此,这意味着您的整个应用只能拥有一个引擎(和一个工厂), 或者您将在应该保持打开的地方关闭设备。
这是否是一个设计缺陷,我不知道。我建议将芬奇变成 单身一堂课,但我的想法被作者拒绝了。