Core Animation utiliza un hilo de fondo para hacer su trabajo. Ahora el problema es este: tengo un cálculo pesado en el hilo principal. Core Animation se congela inmediatamente hasta que se realiza el cálculo. Y luego continúa terminando sus animaciones. Recuerdo haber leído en un documento que CA tiene una baja prioridad en el tiempo de procesamiento, lo que significa que lo que sea que el hilo principal quiera hacer es alto-prio y se hará con mayor probabilidad que cualquier animación de fantasía al mismo tiempo.¿Hay alguna manera de forzar Core Animation para que ejecute su hilo?
Quiero forzar Core Animation para programar su hilo de fondo muy bien con el hilo principal bajo ninguna circunstancia. O alternativamente, un hilo separado que ejecutará el cálculo pesado fuera del hilo principal. Ya lo intenté, pero CA todavía se congela hasta que lo haga. Espero que el planificador cambie el tiempo de procesamiento rápidamente entre CA y ese cálculo.
¿Cómo se puede obligar a CA a seguir trabajando? Si las cosas van un poco más lento que, está bien. Pero lo más importante es que todas las cosas continúan desde el punto de vista de los usuarios.
Gracias. ¿NSOperations es capaz de hacer tiempos de espera? Mi cálculo ya está desglosado en pedazos. Cada uno está programado con un retraso de 0.05 segundos. Entonces, en realidad, hay algo de tiempo libre entremedio. Sin embargo, cuando CA tiene que hacer precalculaciones al principio, su idea de esperar -animationDidStart es goog. Lo intenté simplemente demorando la llamada para comenzar con el primer bloque de cálculos con 1 segundo. CA comienza a animar, luego entran en acción las pesadas calcinaciones y CA se congela. No ayuda. Estoy ejecutando los cálculos en un nuevo hilo. –
El punto es que después de calcular cada bloque de datos, hay una actualización en la interfaz de usuario. Estas actualizaciones son rápidas y sin problemas, tal como se esperaba. Sería simplemente perfecto cuando hubiera una manera de programar todo esto de tal manera que CA comparta el tiempo de CPU con esto ... echaremos un vistazo a estas cosas de NSOperationQueue, aunque no suenan como que proporcionarían tiempos de espera como Las llamadas de selector de rendimiento demorado hacen (?) –
NSOperationQueue crea subprocesos para sus NSOperations, según sea necesario.Es razonablemente inteligente sobre la administración de las tareas que se realizan cuando, pero no sé si tiene el mismo tipo de conciencia del nivel del sistema en el iPhone que en Snow Leopard (donde está superpuesto a GCD). También admite dependencias entre tareas, que puede utilizar aquí para su beneficio. –