如何在Swift中正确执行后台线程任务(Grand Central Dispatch)
大家好!我是Swift和iOS开发的新手。我正在编写一个简单的应用程序,用于从互联网下载图片。当我点击“下载”按钮时,界面会卡住几秒钟,直到图片出现。我听说应该使用后台线程,以免阻塞主线程(UI)。但我不明白如何在Swift中正确实现这一点。
这是我当前的代码:
```swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
@IBAction func loadImageTapped(_ sender: UIButton) {
// 问题:这段代码在主线程上执行
let url = URL(string: "https://example.com/large-image.jpg")!
let data = try! Data(contentsOf: url)
imageView.image = UIImage(data: data)
}
}
```
我尝试过使用`DispatchQueue.global().async`,但之后图片没有更新。请告诉我如何正确地在后台加载数据,然后更新UI?以及应该怎么做?