2016-12-05 10 views
0

У меня есть экземпляр AVAudioPlayer, играющий музыку. Экземпляр в контроллере для главного вида на моем главном окне - это не очень фантазия, но это работает:Воспроизведение AVAudioPlayer прекращается при добавлении нового NSView

в .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) в основное представление, музыка останавливается. Вдруг. Это нормально? Что я сделал не так?

+0

Невозможно рассказать с данными строками кода. –

ответ

0

Моя интуиция заключается в том, что вы как-то вызываете стоп на своем AVAudioPlayer экземпляре, когда этот вид добавляется в окно. Есть много способов, в которых вы можете отлаживать это, но я бы поставил символическую точку останова (вы можете больше узнать об этом виде точек останова здесь на SO) в методе stop и посмотреть, будет ли он вызван и откуда. Кроме того, проверьте, не вызвали ли вы снова viewDidLoad при добавлении нового вида (из-за наследования, которое у вас может быть на месте)

В противном случае нет возможности добавить представление, которое может вызвать системную проблему, которая может остановить ваш экземпляр ,