我偶然发现了一位前开发人员编写的这段代码,但不明白其中的注释。
这似乎意味着使用外部DispatchQueue.main.async
调用将满足Apple使用主队列修改UIImageView的要求。
我的问题:我理解主队列被阻塞是因为它正在等待来自内部队列的同步响应。但是这种方法是否会使在主队列上强制调用 ImageView API 失效?它显然不再是主队列了。
private let imageViewQueue = DispatchQueue(label: "com.company.imageViewQueue")
private var imageView: UIImageView?
...
func updateImageView(viewer: UIImageView) {
// have to do this on the main queue as well AND make sure we guard our viewer
DispatchQueue.main.async {
self.imageViewQueue.sync {
self.imageView = viewer
}
}
}
感谢您提供的任何帮助,帮助我们了解这里发生的事情。