Предупреждение, если вы выделяете несколько классов Finch:
В FISoundEngine метод dealloc вызывает closeAudioDevice. Это закрывает аудиоустройство OpenAL.
И, как вы, вероятно, знаете, во всем приложении существует только одно устройство OpenAL!
Итак, это означает, что у вас может быть только один движок (и одна фабрика) для всего вашего приложения,
или вы будете закрывать устройство в местах, где оно должно оставаться открытым.
Является ли это недостатком дизайна, я не знаю. Я предложил превратить Финча в
класс Singleton, но моя идея была отклонена автором.