【问题标题】:AVAudioPlayer playback stops when new NSView is added添加新的 NSView 时,AVAudioPlayer 播放停止
【发布时间】:2016-12-05 13:35:33
【问题描述】:

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

在.h

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

在.m中

- (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),音乐就会停止。突然。这是正常的吗?我做错了什么?

【问题讨论】:

  • 不可能用给定的代码行来判断。

标签: objective-c macos cocoa avaudioplayer nsviewcontroller


【解决方案1】:

我的直觉是,当该视图被添加到窗口时,您会以某种方式在您的 AVAudioPlayer 实例上调用 stop。有很多方法可以调试它,但是,我会在 stop 方法中放置一个符号断点(你可以在 SO 上阅读更多关于这种断点的信息),看看它是否被调用以及从哪里调用。另外,请检查您在添加新视图时是否没有再次调用viewDidLoad(由于您可能拥有的继承)

否则,添加视图不可能触发可能停止您的实例的系统问题。

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多