Я создал домашний вид с тремя навигационными ссылками. Одним щелчком мыши открывается вид со списком из 180 изображений, полученных из AWS S3. Во время прокрутки вид цепляется. Поэтому изображения должны загружаться в фоновом режиме асинхронно. Я уже реализовал функцию downsample для уменьшения занимаемой памяти. Я последовал за докладом WWDC 2018 , в котором объясняется, как реализовать асинхронную загрузку с помощью DispatchQueue. Но я не заставляю его работать. Кстати, я довольно новичок в SwiftUI и Swift.
Я попытался реализовать это, как на скриншоте из выступления WWDC. Моя реализация прокомментирована в моем собственном фрагменте кода ниже. Я также пытался работать с платформой Combine, но не нашел решения для моей проблемы. Большинство веб-сайтов описывают, как работать с DispatchQueue в Swift, но не в SwiftUI, что затрудняет мне, с чего начать.
var body: some View {
List {
ForEach(range.count, id: \.self) { item in
NavigationLink(destination: ImageLargeView()) {
//DispatchQueue.main.async {
Image(uiImage: downsample(thisReturnesAllDownsampledImagesAsUIImage))
//}
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 200, alignment: .center)
.clipped()
}
}
}
Моя цель - избавиться от цепляющего поведения с минимумомобъем памяти.