fix: iOS 12 crash - failed to demangle superclass of UIClosureObserverOperation from mangled name '\M^? \^Hp\M-}\M^?'

This commit is contained in:
Ivan Smolin 2023-06-09 16:09:17 +03:00
parent 2ea88a94aa
commit 1e3b986c83
1 changed files with 17 additions and 19 deletions

View File

@ -22,32 +22,20 @@
import Foundation
class BaseClosureObserverOperation<Output, Failure: Error, ResultClosureType>: DependendAsyncOperation<Output, Failure> {
typealias OnResultClosure = ResultClosureType
let onResult: OnResultClosure?
init(dependency: AsyncOperation<Output, Failure>,
onResult: OnResultClosure? = nil) {
self.onResult = onResult
super.init(dependency: dependency) { $0 }
}
}
private final class ClosureObserverOperation<Output, Failure: Error>:
BaseClosureObserverOperation<Output, Failure, (Result<Output, Failure>) -> Void> {
private final class ClosureObserverOperation<Output, Failure: Error>: DependendAsyncOperation<Output, Failure> {
typealias OnResultClosure = (Result<Output, Failure>) -> Void
private let onResult: OnResultClosure?
private let callbackQueue: DispatchQueue
init(dependency: AsyncOperation<Output, Failure>,
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<Output, Failure>) {
@ -60,8 +48,18 @@ private final class ClosureObserverOperation<Output, Failure: Error>:
}
}
private final class UIClosureObserverOperation<Output, Failure: Error>:
BaseClosureObserverOperation<Output, Failure, @MainActor (Result<Output, Failure>) -> Void> {
private final class UIClosureObserverOperation<Output, Failure: Error>: DependendAsyncOperation<Output, Failure> {
typealias OnResultClosure = @MainActor (Result<Output, Failure>) -> Void
private let onResult: OnResultClosure?
init(dependency: AsyncOperation<Output, Failure>,
onResult: OnResultClosure? = nil) {
self.onResult = onResult
super.init(dependency: dependency) { $0 }
}
override func handle(result: Result<Output, Failure>) {
self.result = result