我的代码如下所示:
var images = [UIImage]()
var isFirstLoop = true
for (imageID in self.imageID’s)
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORIT Y_DEFAULT, 0), {
let imageToAdd = self.getImageFromUrlByID(imageID)
if isFirstLoop
{
self.addSubView(imageToAdd)
isFirstLoop = false
}
}
}
我只是想不通为什么在所有任务完成后将第一个图像添加为子视图......我试图用任何可能的dispatch_async与主线程等组合来包装 addSubView......在将图像添加为子视图之前需要很长时间。请帮我:)提前感谢!!:)
总是 从主线程更新UI。
仅包含实际更新 UI 的dispatch_get_main_queue
。如果您的方法getImageFromURLByID()
访问互联网(我假设它确实如此),那么您不希望在 UI 线程上建立任何连接,因为它通常会冻结它。
for imageID in imageIDs
{
let imageToAdd = self.getImageFromUrlByID(imageID)
if isFirstLoop {
dispatch_async(dispatch_get_main_queue() {
var imageView = UIImageView(image: imageToAdd)
imageView.frame = someFrame
self.addSubView(imageView)
}
isFirstLoop = false
}
}