我想单击一个按钮开始下载图像,并在更新后将我的UIImageView更新为新图像。我的代码的问题是它只下载东西,而不是更新。它只会更新,如果我再次点击它。 我希望它在未来的某个时候更新图像,当图像下载时。我怎么做?如何使用块异步下载图像?
编辑:我找到了错误的代码,改变它有点帮助,它都可以工作。 还有另外一个问题 - 我怎么简化这段代码而不会把它弄乱?它看起来过度。
- (IBAction)getImage
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^{
NSURL *imageURL = [NSURL URLWithString:@"http://example.com/1.jpg"];
__block NSData *imageData;
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^{
imageData = [NSData dataWithContentsOfURL:imageURL];
dispatch_sync(dispatch_get_main_queue(), ^{
self.image = [UIImage imageWithData:imageData];
});
});
});
self.imageView.image = self.image;
}
嗨,我正在研究相同的代码。我需要知道如何访问此块内的自我,因为属性只能在getter/setter形式的块内部访问。在这里使用self.imageView.image会给你一个错误。请让我知道你是如何为这个imageView创建一个属性的。请参阅我的代码。 http://stackoverflow.com/questions/23890573/access-the-control-inside-the-synchronous-block-in-xcode-5-0-iphone – 2014-05-27 14:00:02