【问题标题】:iOS RxSwift how to understand observable lifecycle when defined inside functioniOS RxSwift在函数内部定义时如何理解可观察生命周期
【发布时间】:2019-01-19 02:30:32
【问题描述】:

我对常规 swift 函数中可观察定义的生命周期感兴趣 - 作为局部变量。

当函数返回时,局部变量 observable 是否会被释放?在什么条件下我可以依靠我的 observable 操作直到它完成或出错?

func testObservable()
{
  let obs = Observable<Int>.interval( 2, MainScheduler.instance)
  .subscribe(onNext: {print($0)}) //omitting dispose bag
}

只要它有订阅者并且在取消订阅时被释放,observable 会一直触发吗?

这个案子怎么样? 让 disposeBag = disposeBag()

func testObservable()
    {
      let obs = Observable<Int>.interval( 2, MainScheduler.instance)
      .subscribe(onNext: {print($0)})
      .disposedBy(disposeBag)
    }

【问题讨论】:

  • 运行代码时会发生什么?
  • disposeBag 是在哪里创建的,何时取消初始化?

标签: memory-management swift4 automatic-ref-counting ios11 rx-swift


【解决方案1】:

当源结束(通过发出completederror)或接收器停止接受数据(通过调用其一次性的 dispose)时,链将中断。

因此,在您的第一个函数中,链将在程序的整个生命周期内保持活动状态,而在第二个函数中,当包超出范围时,链将终止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多