From 1e3b986c8352eb6b5f5e29d992738b42282098ae Mon Sep 17 00:00:00 2001 From: Ivan Smolin Date: Fri, 9 Jun 2023 16:09:17 +0300 Subject: [PATCH] fix: iOS 12 crash - failed to demangle superclass of UIClosureObserverOperation from mangled name '\M^? \^Hp\M-}\M^?' --- .../Sources/AsyncOperation+Observe.swift | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/TIFoundationUtils/AsyncOperation/Sources/AsyncOperation+Observe.swift b/TIFoundationUtils/AsyncOperation/Sources/AsyncOperation+Observe.swift index 3b94c89a..17baac58 100644 --- a/TIFoundationUtils/AsyncOperation/Sources/AsyncOperation+Observe.swift +++ b/TIFoundationUtils/AsyncOperation/Sources/AsyncOperation+Observe.swift @@ -22,32 +22,20 @@ import Foundation -class BaseClosureObserverOperation: DependendAsyncOperation { - typealias OnResultClosure = ResultClosureType - - let onResult: OnResultClosure? - - init(dependency: AsyncOperation, - onResult: OnResultClosure? = nil) { - - self.onResult = onResult - - super.init(dependency: dependency) { $0 } - } -} - -private final class ClosureObserverOperation: - BaseClosureObserverOperation) -> Void> { +private final class ClosureObserverOperation: DependendAsyncOperation { + typealias OnResultClosure = (Result) -> Void + private let onResult: OnResultClosure? private let callbackQueue: DispatchQueue init(dependency: AsyncOperation, onResult: OnResultClosure? = nil, callbackQueue: DispatchQueue = .main) { + self.onResult = onResult self.callbackQueue = callbackQueue - super.init(dependency: dependency, onResult: onResult) + super.init(dependency: dependency) { $0 } } override func handle(result: Result) { @@ -60,8 +48,18 @@ private final class ClosureObserverOperation: } } -private final class UIClosureObserverOperation: - BaseClosureObserverOperation) -> Void> { +private final class UIClosureObserverOperation: DependendAsyncOperation { + typealias OnResultClosure = @MainActor (Result) -> Void + + private let onResult: OnResultClosure? + + init(dependency: AsyncOperation, + onResult: OnResultClosure? = nil) { + + self.onResult = onResult + + super.init(dependency: dependency) { $0 } + } override func handle(result: Result) { self.result = result