Мне нужно выполнить сценарий со следующими шагами:Должен ли я использовать очередь операций для этого полного сценария?
- Для того, чтобы сетевой вызов с некоторыми параметрами поиска, предоставленных пользователем
- Затем разобрать свой ответ JSON и создавать модели объектов
- Тогда , для каждого созданного объекта и если у него есть связанный URL изображения, для вызова соответствующей службы для загрузки такого изображения и отображения его в
UICollectionView
при завершении загрузки.
Мне нужно обрабатывать одновременные сетевые вызовы при загрузке N-изображений, которые мне нужны. Пользователь должен иметь возможность отменить текущий поток поиска и запустить новый. Кроме того, я должен принять во внимание, что ячейка для определенного изображения еще не была отображена или она была удалена. Итак, мой вопрос: какой будет лучший подход для этого?
- Выполнение первого сетевого вызова (без параллелизма) и ответ JSON синтаксического анализа непосредственно с помощью
URLSession
иURLSessionDownloadTask
, и используяOperation
иOperationQueue
для последующих шагов. Используйте какinvalidateAndCancel()
дляURLSession
, так иcancelAllOperations()
дляOperationQueue
, если пользователь хочет отменить текущий поиск. - Выполните полный процесс, используя
Operation
иOperationQueue
. - Любой другой и более подходящий подход?
Для последующих сетевых вызовов, потому что у них нет зависимости или приоритет среди них, используя NSOperationQueue (чья первичная выгода в этом случае, о которой я могу думать, это зависимость и приоритет) не добавляет значения, которое я считаю. Вы можете запустить несколько задач с данными NSURLSession и позже вызвать invalidateAndCancel на URLSession имеет смысл. Однако, чтобы загрузить изображение и показать его в CollectionView, я предпочитаю использовать SDWebImage. Он много кэширует, загружает изображение и обновляет пользовательский интерфейс сам по себе, эффективно отображает изображение в коллекцииView/tableView: D –