Загрузка нескольких изображений для отображения в пользовательском интерфейсе - PullRequest
0 голосов
/ 30 июня 2019

Я разрабатываю приложение для iOS в формате swift, которое загружает 6 изображений на каждом экране, и у меня есть восемь таких экранов. Я загружаю изображения асинхронно каждый раз, когда отображается экран. Как я могу отображать все изображения за раз после загрузки? Должен ли я использовать группы рассылки

Кроме того, следует ли мне кэшировать мои изображения, поскольку существует возможность возврата пользователя к предыдущему экрану? если я кеширую, мне, возможно, придется кешировать все изображения (8 экранов - по 6 изображений в каждом: всего 42 изображения) ... не плохая ли практика хранить все изображения в кэше?

Пожалуйста, совет

1 Ответ

0 голосов
/ 01 июля 2019

Вот идея отобразить все изображения одновременно.Использование DispatchSemaphore, согласно Документация

Семафор диспетчеризации - это эффективная реализация традиционного счетного семафора.Отправка семафоров обращаются к ядру только тогда, когда вызывающий поток должен быть заблокирован.Если вызывающему семафору не нужно блокировать, то вызов ядра не производится.

Вы увеличиваете счетчик семафоров, вызывая метод signal (), и уменьшаете счетчик семафоров, вызывая wait () или один из его вариантов.с указанием времени ожидания.

// Declaration
let semaphore = DispatchSemaphore(value: 1)
...
// resource request
semaphore.wait()
...
// resource release
semaphore.signal()

Пример

DispatchQueue.global().async {
   print("download 1 - wait")
   semaphore.wait()
   print("download 1 - wait finished")
   semaphore.signal()
   print("download 1 - finished")
}

Чтобы кэшировать изображение или нет, зависит от вашего сценария, NSCache может выполнить эту работу, если экран оченьважно и часто возвращайтесь к этому экрану.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...