Так как вам нужно будет снова и снова воспроизводить звук при нажатии кнопки, вместо того, чтобы инициализировать его в кнопке каждый раз, вы должны объявить его на уровне класса и либо вы можете инициализировать его в методе viewDidLoad, либо вы можете сделать это также
- (IBAction) btnFire:(id)sender {
if(shotSound==nil)
{
NSString *path = [NSString stringWithFormat:@"%@%@", [[NSBundle mainBundle] resourcePath], @"/gunShot.wav"];
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
shotSound = [[AVPlayer alloc] initWithURL:filePath];
}
[shotSound play];
}
отпустите в dealloc
. Если вы просто хотите иметь звук в этом действии, вы можете использовать AVAudioPlayer
.
Иногда утечка прибора не может обнаружить ее, в этих случаях вы можете использовать инструмент построения и анализа. Кроме того, как вы сказали, если вы отпускаете объект проигрывателя, то сбой приложения может быть вызван тем, что звук все еще воспроизводится, и вы отпускаете проигрыватель (не уверен).