diff --git a/AsyncImageView/AsyncSwiftUIImageView.swift b/AsyncImageView/AsyncSwiftUIImageView.swift index fd654c4d..2a778635 100644 --- a/AsyncImageView/AsyncSwiftUIImageView.swift +++ b/AsyncImageView/AsyncSwiftUIImageView.swift @@ -23,14 +23,14 @@ public struct AsyncSwiftUIImageView< PlaceholderRenderer.Error == Never, Renderer.RenderResult == PlaceholderRenderer.RenderResult { private typealias ImageLoader = AsyncImageLoader + private typealias RequestPipe = (signal: Signal, observer: Signal.Observer) private let renderer: Renderer private let placeholderRenderer: PlaceholderRenderer? private let uiScheduler: ReactiveSwift.Scheduler - private let requestsSignal: Signal - private let requestsObserver: Signal.Observer - private let imageCreationScheduler: ReactiveSwift.Scheduler + @State private var requestPipe: RequestPipe = Signal.pipe() + private var requestsSignal: Signal { self.requestPipe.signal } public init( renderer: Renderer, @@ -42,8 +42,6 @@ Renderer.RenderResult == PlaceholderRenderer.RenderResult { self.placeholderRenderer = placeholderRenderer self.uiScheduler = uiScheduler self.imageCreationScheduler = imageCreationScheduler - - (self.requestsSignal, self.requestsObserver) = Signal.pipe() } @State private var renderResult: Renderer.RenderResult? @@ -117,8 +115,9 @@ Renderer.RenderResult == PlaceholderRenderer.RenderResult { return } - self.imageCreationScheduler.schedule { [data, size, weak observer = self.requestsObserver] in - observer?.send(value: data?.renderDataWithSize(size)) + let renderData = self.data?.renderDataWithSize(self.size) + self.imageCreationScheduler.schedule { [renderData, weak observer = self.requestPipe.observer] in + observer?.send(value: renderData) } } }