В большинстве моих интервью меня спрашивали о веб-сервисах и многопоточности. Я ничего не сделал, поэтому решил узнать больше о Веб-сервисы и Многопоточность с использованием Grand Central Dispatch.Правильно ли я понимаю эти понятия?
Для веб-сервисов, так что я понимаю, что вам нужно получить данные с помощью класса, таких как
NSURLConnection
. в основном установите новыйNSURL
, затем соединение, затем запрос. Вам также необходимо использовать методы API, такие какdidConnect
,didReceiveData
иdidFailLoadWithError
. После того, как вы получите данные, которые обычно находятся в формате JSON или XML и сохраняются как объект NSData, вы можете сохранить его и проанализировать через него. Существует несколько способов разобрать его, например, с помощью SBJSON или NSXMLParser. Затем вы можете сделать с этим то, что вам нужно.Для многопоточности Grand Central Dispatch является способом многопоточности в стиле c. В основном, вы используете его, когда вам нужно делать тяжелую тягу от основного потока, чтобы избежать замораживания приложения. Вы можете отправлять синхронно или асинхронно. Асинхронно означает, что метод в основном потоке будет продолжать выполняться, синхронно означает, что он не будет. Вам никогда не нужно использовать GCD вместе с
NSURLConnection
, потому чтоNSURLConnection
уже выполняет свою работу в фоновом режиме, а затем вызывает делегатов в основном потоке. Но для сохранения и распаковки файлов вы должны использовать GCD. Когда вы вызываетеdispatch_async
, вы переходите в очередь отправки. Вы можете использовать либо последовательную очередь, либо параллельную очередь. Последовательная очередь будет выполнять задачи в очереди по очереди, в порядке их поступления. Это значение по умолчанию. Одновременно с одновременными очередями могут выполняться одновременно выполняемые задачи.
Мой первый вопрос: есть ли у меня правильное понимание этих двух концепций? Я знаю, что есть много, чтобы узнать о GCD, но я просто хочу убедиться, что у меня есть основные идеи правильно. Кроме того, с GCD, почему кто-то когда-нибудь захочет отправлять синхронно, разве это не победит цель многопоточности?
Я не уверен, что это правильное место для такого «вопроса» –
@MitchWheat Я знаю, я не был уверен, что если бы это было или нет. Знаете ли вы, в какой области стека это было бы лучше? – John
http://programmers.stackexchange.com/ –