¿Crear y destruir classs de AVFoundation en queues de background?

Estoy intentando eliminar algunos golpes de performance del hilo principal que ocurren cuando asigno AVPlayer, AVPlayerItem y AVURLAsset en el hilo principal. ¿Alguien ha tenido experiencia en mover asignación / liberación de estos objects a un hilo de background? De manera similar, ¿se puede establecer un elemento actual de AVPlayer en una queue de background?

Lo siguiente definitivamente perjudicará el performance del desplazamiento.

  • Creación de AVPlayer, caída de 10 fps
  • Agregar reproductor a AVPlayerLayer, caída de 15 fps
  • Comenzar a jugar, 15/25 fps drop
  • Pausa play, caída de 15 fps
  • Desasignar AVPlayer, caída de más de 20 fps

Intenté asignar AVPlayer desde un subprocess de background; sin embargo, AVFoundation volverá a principal y realizará la asignación / initialization desde la principal. Lo mismo con play / pause.

Tengo cierto éxito con desasignar AVPlayer / AVPlayerItem en un hilo de background. Básicamente, necesita borrar la última reference a AVPlayer de su hilo de background.

En términos generales, si no está documentado que sea seguro para subprocesss en la documentation de las classs, no debe usar un object de esa class en varios subprocesss.

Más al punto, aunque hay un beneficio para hacer less en el hilo principal, la asignación de AVPlayer , AVPlayerItem y AVURLAsset no será prácticamente un cuello de botella del que deba preocuparse. En su lugar, debería ejecutar Instruments y encontrar problemas reales de performance y concentrarse en ellos.