Возможно, есть лучшее решение, но у меня были похожие проблемы, когда немедленное освобождение убило мой процесс. Это решение, которое я принял. Опять же, там может быть лучше, но для быстрого исправления это должно сработать.
В вашем заголовочном файле создайте следующее:
AVAudioPlayer *boing;
Затем в -(void)playBoing
сделайте, как вы, но измените
AVAudioPlayer *boing = [[AVAudioPlayer alloc] initWithContentsOfURL:
[NSURL fileURLWithPath:resourcePath] error:nil];
до
if (boing != nil) {
boing = nil;
[boing release];
}
boing = [[AVAudioPlayer alloc] initWithContentsOfURL:
[NSURL fileURLWithPath:resourcePath] error:nil];
Это должно гарантировать, что за один раз выделяется только один экземпляр boing