0

我有一个抽象类,它在 awakeFromNib 方法中将 Finch 初始化为全局变量 Finch *engine,如下所示:

engine = [[Finch alloc] init];

抽象类的子类都不会覆盖该方法。但是,每当我尝试我的程序时,Finch 都会打印“Finch:无法打开默认 OpenAL 设备”。在调试器中。为什么 Finch 无法获取默认的 OpenAL 设备?据我所知,我正在按照他们的代码示例中所示的方式做所有事情。

4

2 回答 2

1

我刚刚遇到了同样的问题。对我来说,这是由在多个视图控制器中实例化 Finch 对象引起的。由于某种原因,第二个似乎取消了第一个,并且每当我尝试播放声音时都会收到该错误消息。

为了解决这个问题,我简单地在 App Delegate 中创建了一个 Finch 对象,现在它可以在整个应用程序中完美运行。

希望这可以帮助 :)

于 2011-03-13T09:39:53.657 回答
0

警告,如果您分配多个 Finch 类:

在FISoundEngine 中,dealloc 方法调用closeAudioDevice。这将关闭 OpenAL 音频设备。您可能知道,您的整个应用程序中只存在一个 OpenAL 设备!

因此,这意味着您的整个应用程序只能拥有一个引擎(和一个工厂),否则您将在应该保持打开状态的地方关闭设备。

这是否是设计缺陷,我不知道。我建议把 Finch 变成一个单例类,但是我的想法被作者拒绝了。

于 2012-02-22T11:51:17.600 回答