升级到xcode 11.3后,Combine的接收器不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了升级到xcode 11.3后,Combine的接收器不起作用相关的知识,希望对你有一定的参考价值。
我有以下代码,在我升级到xcode 11.3并停止工作之前,它运行良好。基本上从不调用接收器。任何人都经历过类似的事情吗?
URLSession.shared
.dataTaskPublisher(for: urlRequest)
.map { $0.data }
.mapError { ...... }
.eraseToAnyPublisher()
.decode(type: MyObject.self, decoder: JSONDecoder())
.receive(on: RunLoop.main)
.catch { [weak self] error -> Just<MyObject> in
guard let self = self else { return Just(emptyPayload) }
self.hasError = true
return Just(emptyPayload)
}
.sink(
receiveCompletion: { [weak self] _ in
print("i'm here")
},
receiveValue: { [weak self] value in
print("value")
}
)
答案
dataTaskPublisher(for: urlRequest)
将异步发送值。一旦程序执行离开当前范围,就不再有对管道的引用,并且ARC在网络请求完成之前会破坏您的发布者。
您的管道返回一个可取消的对象。您可以将可取消操作直接分配给实例变量,也可以将store(in:)
运算符添加到管道中。
以上是关于升级到xcode 11.3后,Combine的接收器不起作用的主要内容,如果未能解决你的问题,请参考以下文章
升级code11.3后遇到React Native启动报错的问题 getCurrentAppState:error 和 objectAtIndexedSubscript: 的解决方案
转载黑苹果USB一键定制脚本:可临时修复升级11.3系统版本后USB失效问题