【发布时间】:2013-03-22 18:54:28
【问题描述】:
在我的应用中,我从 URL 加载图像:
-(void)loadImages
{
...
image1 = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl1]];
}
为了避免在下载完成之前阻塞主线程,我在
-viewDidAppear 使用GCD:
dispatch_async( dispatch_get_global_queue(0,0), ^{
[self loadImages];
});
但是,当我第一次用imageView 打开我的view controller 时,imageView 是空的(即使我等待了很长时间)但是当我再次打开这个view controller 并出现图像后一切顺利。
我的错误在哪里? 抱歉,多线程新手 :)
编辑:
我也忘了提一下,我得到它时使用了tableView中的图像:
cell.imageView.image = image1;
【问题讨论】:
-
dispatch_get_global_queue不是 UI 更新所需的主队列。请改用dispatch_async(dispatch_get_main_queue(), ^{ ... });。有关信息,请参阅此答案:stackoverflow.com/q/9602042/558933
标签: iphone ios objective-c xcode cocoa