何らかの理由で、cleanupPlayer メソッドには少しバグがあり、オーディオ プレーヤーを正しく解放していません。アプリケーションがときどきクラッシュしますが、メモリの問題が原因ではないかと思われます。また、音声ファイルを 2 回 (ボタンをクリックして) 再生しようとすると、2 回目で音声が途切れることがあります。私は少し初心者なので、どんな助けでも大歓迎です!
コードのスニペットを次に示します。
.h ファイル:
@property (retain,nonatomic)AVAudioPlayer *player;
.m ファイル:
-(void)playSound:(NSString *)fileName
{
// Play
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:fileName ofType:kSoundFileType]];
_player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
_player.delegate = self;
[_player prepareToPlay];
[_player play];
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
[self cleanupPlayer];
}
-(void)cleanupPlayer
{
if(_player != nil) {
[_player release];
}