не выпускайте плеер только потому, что он существует.отпустите по окончании воспроизведения
Это необходимо реализовать в делегате приложения или свойстве делегата приложения, чтобы ссылка на делегат оставалась действительной, если вы открываете представление.
Вам не нужно делатьэто для каждого голоса.Каждый голос будет инициализировать игрока с другим именем файла или URL.Вы получите это, убедившись, что выпустите, когда закончите играть.Другая вещь, о которой нужно позаботиться, это освободить игроков, если игрок не закончил из-за перерыва.
#pragma mark -
#pragma mark Audio methods
-(void)playNote:(NSInteger)noteNumber {
NSString *soundFilePath =
[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%i", noteNumber ]
ofType: @"caf"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
AVAudioPlayer *playerToPrepare = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL
error:nil];
[fileURL release];
[playerToPrepare prepareToPlay];
[playerToPrepare setDelegate: self];
[playerToPrepare play];
}
#pragma mark -
#pragma mark AVAudioPlayer delegate methods
- (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *) playerThatFinished
successfully: (BOOL) completed {
if (completed) {
[playerThatFinished release];
}
}