NSOperationQueue
предшествует Grand Central Dispatch, и в iOS он не использует GCD для выполнения операций (это отличается в Mac OS X).Он использует обычные фоновые потоки, которые имеют немного больше накладных расходов, чем очереди отправки GCD.
С другой стороны, NSOperationQueue
дает вам гораздо больший контроль над тем, как выполняются ваши операции.Например, вы можете определить зависимости между отдельными операциями, что невозможно с обычными очередями GCD.Также возможно отменить операции, которые были поставлены в очередь в NSOperationQueue
(насколько операции поддерживают это).Когда вы ставите блок в очередь отправки GCD, он обязательно будет выполнен в какой-то момент.
Подводя итог, NSOperationQueue
может быть более подходящим для длительных операций, которые, возможно, придется отменить илиимеют сложные зависимости.Очереди отправки GCD лучше подходят для коротких задач, которые должны иметь минимальную производительность и нехватку памяти.
EDIT : похоже, документация о NSOperationQueue
устарела и делает используйте GCD на iOS 4.0 и более поздних версиях.