下载多个图像以显示在UI上

时间:2019-06-30 20:54:46

标签: ios swift caching

我正在快速设计iOS应用,该应用在每个屏幕上下载6张图片,而我有8个这样的屏幕。每次显示屏幕时,我都会异步下载图像。下载后如何一次显示所有图像..我应该使用调度组吗?

我还应该缓存图像,因为用户可以返回上一屏幕吗? 如果我缓存,则可能必须缓存所有图像(8个屏幕-6张图像:总共42张图像)..将所有图像都保存在缓存中不是不好的做法吗?

请咨询

1 个答案:

答案 0 :(得分:0)

这里是一次显示所有图像的想法。根据{{​​3}}

使用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可以完成此工作。