升级到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: 的解决方案

Xcode 11.3“没有可用的条件”

从 Xcode 11.3 启动 iOS 模拟器并出现黑屏

转载黑苹果USB一键定制脚本:可临时修复升级11.3系统版本后USB失效问题

Xcode 9.2 不支持 iOS 11.3 的 Xcode 需要 9.3

XCode 构建错误 - 缺少必需的模块“算法”