From 62cae5c79692018049a6201ba45882d8dfaaa958 Mon Sep 17 00:00:00 2001 From: Kat Tsysarenko Date: Wed, 21 Sep 2022 22:39:56 +1000 Subject: [PATCH] update Published properties in the main thread --- SDWebImageSwiftUI/Classes/ImageManager.swift | 22 +++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/SDWebImageSwiftUI/Classes/ImageManager.swift b/SDWebImageSwiftUI/Classes/ImageManager.swift index 202f7ccf..d1611ce8 100644 --- a/SDWebImageSwiftUI/Classes/ImageManager.swift +++ b/SDWebImageSwiftUI/Classes/ImageManager.swift @@ -63,7 +63,9 @@ public final class ImageManager : ObservableObject { if currentOperation != nil { return } - self.isLoading = true + DispatchQueue.main.async { + self.isLoading = true + } currentOperation = manager.loadImage(with: url, options: options, context: context, progress: { [weak self] (receivedSize, expectedSize, _) in guard let self = self else { return @@ -89,14 +91,18 @@ public final class ImageManager : ObservableObject { // So previous View struct call `onDisappear` and cancel the currentOperation return } - self.image = image - self.error = error - self.isIncremental = !finished + DispatchQueue.main.async { + self.image = image + self.error = error + self.isIncremental = !finished + } if finished { - self.imageData = data - self.cacheType = cacheType - self.isLoading = false - self.progress = 1 + DispatchQueue.main.async { + self.imageData = data + self.cacheType = cacheType + self.isLoading = false + self.progress = 1 + } if let image = image { self.successBlock?(image, data, cacheType) } else {