2014-12-08 1 views
0

Это общий вопрос «наилучшей практики».

Мне нужно получить несколько изображений с удаленного сервера и сохранить их в файловой системе моего приложения. Теперь я знаю, что есть несколько способов сделать это, но я пытаюсь выяснить, что является самым распространенным в наши дни.
Вообще говоря, я могу либо использовать асинхронный запрос, либо открыть другой поток и запустить синхронный запрос. На первый взгляд, оба будут работать. Но под капотом я хочу убедиться, что я использую свое оборудование как можно больше. В частности, будет ли запрос async автоматически использовать многоядерное аппаратное обеспечение, или он будет работать на основном потоке циклически.

Итак, что считается лучшей практикой здесь? Должен ли я использовать метод, который, как известно, быть asynced (например, NSURLSession «s dataTaskWithURL), или использование НОД и запустить синхронизированную NSData (contentsOfURL :) в другом потоке?iOS и Swift: Async vs sync в новом потоке для извлечения файлов с URL-адреса

+0

Я бы предположил, что в любом случае, возможно, хорошо. Таким образом, такая задача будет ограничена сетью, так что это не имеет большого значения в отношении многоядерных процессоров и т. Д. – Paulw11

ответ

0

Я на самом деле думаю, что это интересный вопрос.

На мой взгляд, оба они действительно эквивалентны производительности POV (хотя я, очевидно, не участвую в реализации NSURLSession, я бы предположил, что он использует GCD под капотом (или, может быть, NSOperationQueue)).

NSURLSession обеспечивает объектно-ориентированный и контролируемый способ взаимодействия с веб-контентом. GCD с NSData - гораздо более простая парадигма, но то, что вы получаете в простоте, теряете в управление.

Например, взять очки, сделанные here:

NSURLSessionвысокий уровень API, чтобы сделать его легким для выполнения HTTP-запросов. Grand Central Dispatch (GCD) - это API параллелизма. Вы можете использовать GCD для достижения асинхронных вызовов, но затем вам необходимо выполнить все управление сетью вручную.

+1

NSURLSession действительно имеет больше смысла. Большое спасибо! –

+0

@DarkshoreGrouper, удовольствие! – Woodstock