我的代码如下:
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
}
}
}
我只是无法解释为什么第一个图像在所有任务完成后被添加为subView ....我试图用任何可能的dispatch_async与主线程的组合来包装addSubView,所以上... 它需要很长时间才能将图像添加为subView ..请帮帮我:) 提前致谢!! :)
答案 0 :(得分:3)
始终 从主线程更新用户界面。
答案 1 :(得分:1)
仅包含实际更新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
}
}