iOS SDK:AVAudioPlayer在后台播放音乐和切换视图保持重叠

iOS SDK:AVAudioPlayer在后台播放音乐和切换视图保持重叠,ios,Ios,可能重复: 我正在尝试在我的应用程序中播放音乐。音乐工作正常,但在切换ViewController并返回主菜单后,音乐将再次播放!这意味着几个相同的声音一起播放!我怎样才能解决这个问题 firtview.h #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @interface ViewController : UIViewController{ AVAudioPlayer *theAudio;

可能重复:

我正在尝试在我的应用程序中播放音乐。音乐工作正常,但在切换ViewController并返回主菜单后,音乐将再次播放!这意味着几个相同的声音一起播放!我怎样才能解决这个问题

firtview.h

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface ViewController : UIViewController{

AVAudioPlayer *theAudio;
}
@end

您可能会遇到一些问题,首先,当视图加载时,您正在播放声音,现在我不知道您是否正在尝试解除该视图viewController的分配,但是当您这样做时,您可能不会释放并停止声音,因此您正在泄漏AVAudioPlayer,因为您没有释放并停止播放音频播放器,当你回到视图控制器时,重新分配播放器,它再次开始播放。。。不确定您的意图是什么,但如果他们只想在分配视图控制器时播放声音,那么您应该使用dealloc方法,或者在适当的情况下,停止avaudioplayer并将其释放。。。如果您试图通过应用程序播放您的声音,那么您可能需要将播放器分配到其他位置。。。 看看你的评论,像这样的事情可能对你有用

-(void)viewDidLoad
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"GENIEAPP" ofType:@"mp3"];
    if(!theAudio){
        theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

        theAudio.numberOfLoops = -1;
        [theAudio play];
    }
    else
    {
        //stop the sound and play it again
        [theAudio stop];
        [theAudio play];
    }
}

好吧,我希望声音在我的3个视图中播放,当我按home按钮回到我的第一个视图时,我希望音乐重新启动。有没有更好的方法来完成我想做的事情?如果这是我应该怎么做,我从哪里开始?当viewDidLoad第二次启动时,您的音频播放器是否已分配?是的,当viewDidLoad第一次启动其分配的HMMMM..嘿,Daniel,我尝试了编辑,现在音乐在应用程序启动时不会播放正确的,您需要在第一次启动时启动
-(void)viewDidLoad
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"GENIEAPP" ofType:@"mp3"];
    if(!theAudio){
        theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

        theAudio.numberOfLoops = -1;
        [theAudio play];
    }
    else
    {
        //stop the sound and play it again
        [theAudio stop];
        [theAudio play];
    }
}