由于分段错误,我花了太长时间试图修复发布版本11。
最后,代码的更改是从这个。。。
fetchValue
.receive(on: scheduler)
.store(in: &subscriptions)
.sink { [weak self] completion in
switch completion {
case .failure(let error):
self?.state = .error(error.localizedDescription)
case .finished:
return
}
} receiveValue: { [weak self] value in
self?.state = .someValue(value)
}
.store(in: &subscriptions)
对此。。。
fetchValue
.map(State.someValue)
.catch { error in Just(State.error(error.localizedDescription)) }
.receive(on: scheduler)
.assign(to: .state, on: self)
.store(in: &subscriptions)
特别是catch
线路导致了问题。
在上文中,CCD_ 2被定义为CCD_。
并且self.state
被定义为类似于枚举的。。。
enum State {
case someValue(SomeValue)
case error(String)
}
它是为调试和测试而构建的,没有任何问题。
但是,当使用Xcode 13.0和13.1构建发布(存档(时,它导致了分段错误11,我不知道为什么?
您是否尝试使用实例方法而不是静态方法来映射枚举?
fetchValue
.map(State.someValue)
fetchValue
.map { State.someValue($0) }