我有一个抽象类,它在awakeFromNib方法中将Finch初始化为全局变量Finch *engine,如下所示:
引擎= [Finch alloc init];
抽象类的子类都不会重写该方法。然而,每当我尝试我的程序,芬奇打印“芬奇:无法打开默认的OpenAL设备。”在调试器中。为什么芬奇不能得到默认的OpenAL设备?据我所知,我所做的一切都如他们的代码示例所示。
发布于 2011-03-13 17:39:54
我刚刚遇到了同样的问题。对我来说,这是由于在多个视图控制器中实例化一个Finch对象造成的。由于某些原因,第二个似乎取消了第一个,每当我尝试播放声音时,我都会收到这个错误消息。
为了解决这个问题,我简单地在app Delegate中创建了一个Finch对象,现在它在整个应用程序中都可以完美地工作。
希望这能有所帮助:)
发布于 2012-02-22 19:51:18
警告,如果要分配多个Finch类:
在FISoundEngine中,dealloc方法调用closeAudioDevice。这将关闭OpenAL音频设备。正如你可能知道的,在你的整个应用程序中只有一个OpenAL设备!
因此,这意味着你的整个应用程序只能有一个引擎(和一个工厂),否则你将在设备应该保持打开的地方关闭设备。
这是不是一个设计缺陷,我不知道。我建议将Finch变成一个单独的类,但我的想法被作者拒绝了。
https://stackoverflow.com/questions/5113003
复制相似问题