¿Cuándo debo usar el GCD? ¿Cuándo debo usar NSOperation?

GCD es una forma ligera de representar unidades de trabajo que se ejecutarán simultáneamente. No programa estas unidades de trabajo; el sistema se encarga de programarlo por usted. Agregar dependencia entre bloques puede ser un dolor de cabeza. ¡Cancelar o suspender un bloque crea trabajo adicional para usted como desarrollador!

NSOperation y NSOperationQueue agregan una pequeña sobrecarga adicional en comparación con GCD, pero puede agregar dependencia entre varias operaciones. Puede reutilizar operaciones, cancelarlas o suspenderlas. NSOperation es compatible con Key-Value Observation (KVO); por ejemplo, puede comenzar a ejecutar NSOperation escuchando NSNotificationCenter.

Consulte estos tutoriales para comprender mejor ambos:
Tutorial de múltiples hilos y Grand Central Dispatch en iOS para principiantes – Ray Wenderlich
Cómo usar NSOperations y NSOperationQueues – Ray Wenderlich

GCD

  • Es una API basada en C de bajo nivel que le ayuda a administrar la concurrencia basada en tareas.

NSOperation

  • Son clases de Objective C implementadas internamente por GCD .

En general, debe usar el nivel más alto de abstracción, esto significa que debe usar NSOperation, pero como NSOperation es una clase de cacao, se asigna y desasigna, lo que causa un costo general al usar NSOperation. Estos costos generales son pequeños, pero pueden desempeñar un papel importante si su aplicación necesita mucha memoria, como juegos y aplicaciones de procesamiento de video o imágenes.

Entonces, a menos que necesite ese nivel de gestión de memery, vaya con NSOperation.

  • Se recomienda GCD para tareas independientes ya que el sistema lo gestiona de manera muy eficiente.
  • Pero si tiene una función que contiene bloque como devolución de llamada, debe usar NSOperation + NSOperationQueue.
  • Como tal, NSOperationQueue utiliza GCD en su núcleo para lograr un rendimiento óptimo.
  • Por lo general, GCD se usa para procesar tareas de incentivos que involucran un alto uso de CPU sin bloquear el hilo principal.
  • Esto da como resultado un rendimiento fluido y una gran experiencia de usuario.
  • Donde como NSOperation + NSOperationQueue se utiliza para tareas que requieren mucho tiempo, como llamadas de servicio web o tareas en segundo plano.

Si tiene algunas líneas de código o una llamada a un método que necesita ejecutar (generalmente de forma asincrónica), continúe con GCD. Una vez que descubre que hay dependencias entre ellos y comienza a rastrear su estado de finalización o desea poder cancelarlos, busca en NSOperation + NSOperationQueue.

More Interesting

Cómo predecir la cantidad y el costo de las actualizaciones de la aplicación iOS cuando se utiliza un desarrollador independiente

¿Cuáles son algunas ideas para un juego mínimo de iOS?

¿Qué plataforma es la mejor para las pruebas beta de iOS (Testflight, Hockey, etc.) a gran escala?

¿Por qué las tecnologías de parches en caliente / implementación en caliente como JSPatch no son populares en las aplicaciones de iOS estadounidenses?

Si me convertí en desarrollador de iOS este año, ¿habrá un trabajo relativamente estable (sin preocuparse por el desempleo) para mí hasta 2020?

¿Cómo funciona Crashlytics en iOS? ¿Cómo detectamos un bloqueo y obtenemos la pila para lo mismo?

¿Cómo es tu nueva experiencia con la aplicación iPad Quora?

¿Qué pasos debo saber antes de contratar un desarrollador de iPhone en línea?

Cómo superar el miedo al fracaso para el desarrollo de iOS

¿Cuánto tiempo debería llevar a un desarrollador móvil experimentado portar una aplicación de iOS a Android?

¿Qué es lo que lleva más tiempo, codificar una tienda web / sitio web desde cero (sin WP o similar) o codificar exactamente el mismo servicio desde cero pero para Android / iOS?

Desarrollo de IOS: ¿Hay algún tutorial que muestre cómo crear una aplicación de collage de imágenes?

¿El libro de cuentos infantiles de iTunes para iPad está sobresaturado? ¿Todavía hay dinero por hacer?

Cómo buscar los mejores y más asequibles desarrolladores de iPhone en EE. UU.

¿Dónde puedo encontrar estadísticas actuales sobre el uso de la versión de iOS?