У меня есть подкласс UIViewController для игры с AVAudioPlayer для воспроизведения песни в фоновом режиме. В моем методе viewDidLoad у меня есть следующий код:
[super viewDidLoad];
...
[NSTimer scheduledTimerWithInterval: 0.03 target: self selector: @selector(gameLoop) userInfo: nil repeats: YES];
NSString *path = @"path-to-song";
self->audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: [NSURL fileURLWithPath: path] error: NULL];
audioPlayer.delegate = self;
audioPlayer.numberOfLoops = - 1;
[audioPlayer play];
gameLoop - это метод, который содержит основную логику игры. Когда я запускаю приложение на своем тестирующем устройстве, звук воспроизводится, но кажется, что он завис, и gameLoop не работает нормально. Если я удаляю весь код AVAudioPlayer, игра отлично работает в противном случае. Кажется, здесь есть какая-то проблема с потоками, о которой я не знаю. Есть идеи?