El indicador de actividad CABasicAnimation hace que el procesamiento de background tome 300% más time

Estoy realizando una animation muy simple para un indicador de actividad personalizado de la siguiente manera:

var iconView: UIImageView! let animation = CABasicAnimation(keyPath: "transform.rotation") animation.fromValue = 0 animation.toValue = 2 * M_PI animation.repeatCount = .infinity animation.duration = 1.25 iconView.layer.addAnimation(animation, forKey: animation.keyPath) 

iconView solo muestra una image de 96×96 píxeles que se rota con el código de animation que se muestra.

Esto funciona bien, pero cuando se utiliza la animation, ¡mi process de background tarda 310% más! El process en segundo plano se realiza en un NSBlockOperation en un NSOperationQueue:

 public var backgroundQueue = NSOperationQueue() backgroundQueue.qualityOfService = .UserInitiated let operation1 = NSBlockOperation() operation1.queuePriority = NSOperationQueuePriority.VeryHigh operation1.qualityOfService = .UserInitiated 

En el siguiente file de rastreo de Time Instrument, el primer rastreo se realiza con la animation y toma aproximadamente 1 minuto y 24 segundos. ¡La única diferencia con la segunda traza es que deshabilité el código CABasicAnimation anterior y el mismo process demora 27 segundos!

Instrumentos de time trazas

He examinado el perfil y no puedo encontrar ninguna razón por la que demore mucho más. Pensé que podría haber sido que estaba usando una vista de UIVisualEffectView para el background del indicador de actividad personalizada, pero deshabilitando eso no tenía ninguna mejora marcada (deshabilitada para los rastros anteriores). Cualquier idea o recomendación sería muy apreciada.

Actualización: el uso de un UIActivityIndicatorView lleva 29 segundos mucho más razonables (frente a 27 sin ningún indicador).

EDITAR: Aquí es como se ve la traza sin la animation: Perfil de tiempo sin animación

Y la huella con la animation: Perfil de tiempo con animación