¿Cuál es la diferencia en GCD y NSOperation?

GCD es una API de bajo nivel basada en C.
NSOperation y NSOperationQueue son clases de Objective-C.
NSOperationQueue es un contenedor C objetivo sobre GCD . Si está utilizando NSOperation, está utilizando implícitamente Grand Central Dispatch.

Ventaja de GCD sobre NSOperation:
yo. implementación
Para la implementación de GCD es muy ligero
NSOperationQueue es complejo y pesado

Ventajas de NSOperation sobre GCD:

yo. Control en funcionamiento
puede pausar, cancelar, reanudar una NSOperation

ii) Dependencias
puede configurar una dependencia entre dos NSOperations
La operación no se iniciará hasta que todas sus dependencias devuelvan verdadero para finalizado.

iii) Estado de la operación
puede monitorear el estado de una operación o una cola de operaciones. listo, ejecutándose o terminado

iv. Número máximo de operación
puede especificar el número máximo de operaciones en cola que pueden ejecutarse simultáneamente

Cuándo ir para GCD o NSOperation
cuando desee un mayor control sobre la cola (todo lo mencionado anteriormente) use NSOperation y para casos simples en los que desee menos sobrecarga (solo quiera hacer un trabajo “en segundo plano” con muy poco trabajo adicional) use GCD

GCD es una API de bajo nivel, mientras que la operación se construye sobre GCD. Tenemos mucha más flexibilidad en la operación. Podemos tener confiabilidad entre dos preguntas. GCD es como disparar y olvidar, pero tenemos mucho más control sobre la operación.