В последнее время я начал использовать NSOperationQueue
в своей работе для управления фоновыми сетевыми запросами.NSOperation
имеет дело с большей частью стандартного кода, необходимого для асинхронно выполняющихся задач (например, сетевых операций) в потоках в фоновом режиме (или на переднем плане, если это необходимо для обновлений пользовательского интерфейса).
Также разрешает зависимости между очередями;например, я использую две очереди в своем приложении:
Первые планируют загрузку изображений с максимальной одновременностью 2 одновременно в фоновом режиме.Каждая загрузка изображения имеет соответствующий обработчик завершения (как NSBlockOperation
), который зависит от завершения загрузки изображения.Эти операции выполняются на [NSOperationQueue mainQueue]
, который работает в основном потоке, что позволяет им обновлять пользовательский интерфейс (в частности, соответствующий UIImageView
).
Обратите внимание, что NSOperation
и NSOperationQueue
не предназначены для сетитолько запросы, но любая операция, которая может быть разделена на элементарные задачи и запланирована одновременно.
Здесь - вводные документы Apple по теме.