添加新的NSView时,AVAudioPlayer播放停止

时间:2016-12-05 13:35:33

标签: objective-c macos cocoa avaudioplayer nsviewcontroller

我有AVAudioPlayer实例播放音乐。该实例位于我主窗口主视图的控制器中 - 它不是很花哨,但它有效:

中的.h

@interface ViewController () {
    AVAudioPlayer *music;
}
@end
<。> <。>

- (void)viewDidLoad
{
    [super viewDidLoad];

    music = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/music01.mp3", [[NSBundle mainBundle] resourcePath]]] error:nil];
    [music playAtTime:0]; // play from start
    [music prepareToPlay];
}

-(void)playMusic {
    if (music) {
        [music play];
    }
}

到目前为止一切顺利。除非我将视图(以编程方式,使用它自己的NSViewController)添加到主视图,否则音乐会停止。突然。这是正常的吗?我做错了什么?

1 个答案:

答案 0 :(得分:0)

我的直觉是,当该视图添加到窗口时,您以某种方式在AVAudioPlayer实例上调用stop。您可以通过多种方式对其进行调试,但是,我在stop方法中设置了一个符号断点(您可以在此处详细了解此类断点),看看它是否被调用从哪里来。此外,检查在添加新视图时是否再次呼叫viewDidLoad(由于您可能已继承)

否则,添加视图无法触发可能会阻止您的实例的系统问题。