Como executar código corretamente em uma thread de fundo em Swift (Grand Central Dispatch)?
Olá a todos! Sou novo no desenvolvimento iOS com Swift e estou tendo um problema com multithreading. Tenho um aplicativo que carrega imagens da internet. Quando chamo a função de carregamento na thread principal, a interface congela por alguns segundos — a rolagem da tabela fica lenta e as animações desaparecem. Entendo que preciso mover operações pesadas (requisições de rede, processamento de dados) para uma thread de fundo, mas não sei como fazer isso corretamente.
Aqui está um exemplo do meu código:
```swift
func loadImage(from urlString: String) -> UIImage? {
guard let url = URL(string: urlString) else { return nil }
do {
let data = try Data(contentsOf: url)
return UIImage(data: data)
} catch {
print("Error loading image: \(error)")
return nil
}
}
// Uso no viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
let image = loadImage(from: "https://example.com/large-image.jpg")
imageView.image = image
}
```
Ouvi falar sobre Di