AVAudioPlayer的内存问题

时间:2013-09-20 08:00:34

标签: ios audio avaudioplayer

出于某种原因,cleanupPlayer方法有点儿错误,并没有正确释放音频播放器。我的应用程序不时崩溃,我怀疑这是由于内存问题。此外,当我尝试播放两次音频文件时(按下按钮),第二次音频有时会被删除。我是一个新手,所以任何帮助将不胜感激!

以下是一段代码:

.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];
}

1 个答案:

答案 0 :(得分:0)

try this...



-(void)playSound:(NSString *)fileName
{

    if (_player.isPlaying) {
        [_player stop];
    }

        NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:fileName ofType:@"mp3"]];
        _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
{
    _player =nil;

}