可能重复:
iOS SDK : playing music on the background and switching views
我正在尝试在我的应用程序中播放音乐。音乐工作正常,但在切换viewControllers并返回主菜单后,音乐再次播放!这意味着几个相同的声音一起播放!我该如何解决这个问题呢?
firtview.h
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface ViewController : UIViewController{
AVAudioPlayer *theAudio;
}
@end
firstview.m
- (void)viewDidLoad
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"GENIEAPP" ofType:@"mp3"];
theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.numberOfLoops = -1;
[super viewDidLoad];
答案 0 :(得分:1)
你可能在这里有一些问题,首先当视图加载你正在播放声音时,现在我不知道你是否试图解除视图viewController的视图,但是当你这样做时,你可能不会发布并停止声音,所以你正在泄漏AVAudioPlayer,因为你没有释放并停止播放音频播放器,当你回到视图控制器并重新开始播放时你重新分配播放器...不确定你的意图是什么,但如果它们是只有在分配了视图控制器时播放声音,那么你应该在dealloc方法或appripriate,停止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];
}
}