tl;dr это зависит от разработчика с некоторыми исключениями
Прежде всего, вы не управляете потоками через GCD, вы ставите задачу в очередь.
Grand Central Dispatch (GCD) — это технология, разработанная Apple Inc. для оптимизации поддержки приложений для систем с многоядерными процессорами и другими симметричными многопроцессорными системами. Это реализация параллелизма задач на основе шаблона пула потоков. Основная идея состоит в том, чтобы перевести управление пулом потоков из рук разработчика в операционную систему. Разработчик внедряет «рабочие пакеты» в пул, не обращая внимания на архитектуру пула. Эта модель повышает простоту, переносимость и производительность.1
Во-вторых, что вы подразумеваете под API? Я полагаю, вы хотели сказать REST API. Другое предположение заключается в том, что вы имеете в виду собственный SDK для сервиса REST API, потому что если вы реализуете его самостоятельно через сетевую библиотеку, то вы несете ответственность за это. Как я вижу из своего более чем 3-летнего опыта, в iOS все вызовы любого метода синхронны по умолчанию, разработчик несет ответственность за помещение их в другую очередь через GCD или NSOperationQueue или что-то еще.
Не смущайтесь наличием аргумента блока завершения в конце вызова API. В общем случае вы также несете ответственность за то, чтобы любое обновление пользовательского интерфейса выполнялось в основной очереди, поскольку по умолчанию этот блок выполняется не в основной очереди, вы можете произвести некоторые манипуляции с данными вы приобрели с сервера, например. сортировать, конвертировать в другой тип и т. д.
Существует лишь несколько исключений SDK, которые помещают весь блок завершения в основную очередь, например. AFNetworking или Parse. Но в этом случае поставщики SDK предоставляют информацию об этом поведении.
person
Yurii Kolesnykov
schedule
26.08.2015