UIAlertView rompe el process de audio de AVPlayer

Tengo una aplicación básica de iOS que utiliza un AVPlayer para reproducir files locales con una MTAudioProcessingTap adjunta. UIAlertView una UIAlertView emergente UIAlertView con un campo de text para permitir que las URL personalizadas se agreguen a la list de reproducción de la aplicación, pero cuando se muestra la alerta usando [alert show] , el sistema de audio falla. Si muestro la alerta antes de que se haya reproducido una pista, comience a reproducir una pista y luego muestre la alerta otra vez que funciona bien, casi como si hubiera algún penalizador de punta de CPU para el primer show (aunque no puedo ver nada en los instrumentos )

Alerta:

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Play Remote Track" message:@"Enter the address." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Play", nil]; alert.alertViewStyle = UIAlertViewStylePlainTextInput; [alert show]; 

Errores:

  • Mensaje de logging: <ClientProcessingTapManager> AudioQueueProcessingTapGetSourceAudio posting message to kill mediaserverd (36078)
  • MTAudioProcessingTapGetSourceAudio() devuelve el código de estado 268451843 luego en el siguiente package 268435459 .

Actualización : el problema solo ocurre durante la debugging, por lo que resulta que no es una parada espectacular. Aun así, estaría interesado en llegar al final.

Prueba esto:

 #import <dispatch/dispatch.h> dispatch_async(dispatch_get_main_queue(), ^{ UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Play Remote Track" message:@"Enter the address." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Play", nil]; alert.alertViewStyle = UIAlertViewStylePlainTextInput; [alert show]; }); 

Si no ayuda, intente search en el Código de muestra del procesador de audio MTAudioProcessingTap . He intentado poner su llamada AlertView en diferentes lugares mientras se mostraba el video, y todo estaba bien, sin errores. Fue iPad Simulator v. 6.1.

Solo para poner a este en la cama, finalmente llegué a la conclusión de que se trataba de un problema de performance. En todas las demás circunstancias en las que me he encontrado, el AudioQueueProcessingTapGetSourceAudio posting message to kill mediaserverd (36078) parece ser llamado cuando haces "demasiado" trabajo dentro del MTAudioProcessingTap process MTAudioProcessingTap . Creo que mostrar el UIAlertView en mi caso estaba empujando el dispositivo por el borde.

En cuanto a lo que constituye un trabajo "demasiado", no tengo ni idea, y no hay ninguna mención en ninguna de la documentation en el file de encabezado para MTAudioProcessingTap . En varios dispositivos que probé mi aplicación, pude boost el trabajo realizado en el bucle de audio hasta que la CPU en general estuvo a aproximadamente el 20%, apareció el post de "matar" y el grifo dejó de llamar a su callback de procesamiento. Debe ser un límite impuesto artificialmente, o por alguna razón mi ciclo de process no pudo cumplir con su garantía de time real, independientemente de la cantidad de CPU utilizada.