我正在设计iOS应用,它在每个屏幕上下载6张图片,我有8个这样的屏幕。每次屏幕显示时,我都会异步下载图片。如何在下载..should后一次显示所有图像?我使用分派组
另外,我是否应该缓存我的图像,因为用户返回到以前的屏幕是可行的?如果我缓存,我可能必须缓存所有的图像(8个屏幕-6个图像,总共42张图像)。
请指点
发布于 2019-07-01 03:05:01
这里有一个想法,一次显示所有的图像。使用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
可以完成此工作。
https://stackoverflow.com/questions/56828021
复制相似问题