Что я должен использовать для параллелизации частых HTTP-запросов на сервер REST в приложении iOS: GCD или NSThread?

Я разрабатываю приложение, которое должно извлекать новые сообщения для пользователя с сервера. Я реализовал это как таймер, который срабатывает каждые 2 секунды и вызывает селектор, который является методом, реализующим HTTP-запрос и обработку ответа сервера. Поэтому я думаю, что это довольно плохая идея сделать это в основной теме.

У меня нет опыта многопоточности в iOS. Поэтому я хочу знать, что подходит для распараллеливания этой задачи: GCD или NSThread?

0
nl ja de
Используйте GCD. Я не хочу снова писать о преимуществах GCD над NSThread, но вы можете искать его здесь, и в SO очень много информации
добавлено автор msk, источник

1 ответы

Вы должны работать как можно ближе к стеке API. Таким образом, вы можете сосредоточиться на функциональности программирования и не управлять потоками. GCD использует потоки, которые система все равно собирается, и намного эффективнее, чем управление собственным кодом. Еще лучше попытаться инкапсулировать вашу сеть в NSOperation s, который затем можно поместить на NSOperationQueue , и они будут выполняться на одном или нескольких фоновых потоках, независимо от того, что система считает является хорошим числом для текущего состояния власти и других подобных вещей.

Преимущество NSOperation над чистым подходом GCD заключается в том, что операции можно отменить. Как только блок привязан к GCD, он должен работать независимо от того, что.

Если вы хотите инкапсулировать ваши HTTP-запросы в NSOperation , вам может быть интересно узнать, что кто-то уже сделал это для вас. AFNetworking является одним из наиболее популярных сетевых стеков iOS и использует NSOperation s как основу для построения и, как таковой, очень легко многопоточную.

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

1
добавлено
Обратите внимание, что «отмена способности» NSOperations имеет сомнительную выгоду от ее собственных (т. Е. Отсутствующего явного кода, предоставленного разработчиком, который совместно проверяет отмену) - после того, как операция началась, она не может быть (значимо) отменена, если только она не будет «отменяет» себя, возвращаясь рано.
добавлено автор ipmcc, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.