【问题标题】:Downloading multiple images to display on UI下载多个图像以在 UI 上显示
【发布时间】:2019-11-11 15:48:35
【问题描述】:

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

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

请指教

【问题讨论】:

    标签: ios swift caching


    【解决方案1】:

    这是一次显示所有图像的想法。使用DispatchSemaphore,根据Documentation

    调度信号量是传统的有效实现 计数信号量。调度信号量只调用内核 当调用线程需要被阻塞时。如果调用信号量 不需要阻塞,不进行内核调用。

    您可以通过调用 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 可以完成工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2017-09-23
      相关资源
      最近更新 更多