Распространенный вопрос на собеседованиях: чем отличается NSOperation от GCD? Когда использовать GCD, а когда NSOperation?
Начнем с определений:
GCD — это низкоуровневый API на основе C, который напрямую взаимодействует с уровнем Unix системы.
NSOperation и NSOperationQueue являются классами Objective-C. NSOperation — оболочка GCD. Если вы используете NSOperation, то вы неявно используете Grand Central Dispatch.
Преимущество GCD
- Реализация GCD очень простая.
Преимущества NSOperation
- NSOperation обеспечивает поддержку зависимостей. Это преимущество позволяет разработчикам выполнять задачи в определенном порядке.
- Операции можно приостанавливать, возобновлять и отменять. Как только вы отправляете задачу с помощью Grand Central Dispatch, вы теряете контроль над жизненным циклом задачи. NSOperation предоставляет разработчику контроль над операцией.
- Вы можете указать максимальное количество операций в очереди, которые могут выполняться одновременно.
Когда использовать GCD или NSOperation
Если вам нужно больше контроля над очередью — используйте NSOperation.
Если вам нужен простой синтаксис и задача не требует гибких настроек очередей — используйте GCD. Грубо говоря, если вам просто нужно отправить блок кода в последовательную или параллельную очередь — используйте GCD.
Больше информации:
Выразить благодарность или найти уникальный материал вы можете в boosty.
Подписывайтесь на мой Telegram-канал iOS Interview Channel, чтобы не пропустить новый материал.