Warnings

    你将会受到一个警告,因为做了一些下面的这些:

    返回一个订阅 Disposablesubscribe 的函数能被用来取消计算和释放资源。然而,不使用它(并且不 dispose 它)将引起一个错误

    终止这些流利调用的更好方法是通过使用 DisposeBag,或通过链式调用 .addDisposableTo(disposeBag) 或通过直接给包增加 disposable。

    1. let xs: Observable<E> ....
    2. let disposeBag = DisposeBag()
    3. xs
    4. .filter { ... }
    5. .map { ... }
    6. .switchLatest()
    7. ...
    8. }, onError: {
    9. ...
    10. })
    11. .addDisposableTo(disposeBag) // <--- note `addDisposableTo`

    xs在无论是CompletedError消息可预见的方式终止的情况下,不处理订阅 Disposable 不会造成任何资源的泄露。 然而,即使在这种情况下,使用处置袋仍是处理订阅一次性的优选方式。它确保元素计算总是在可预测的时刻终止,使代码健壮和未来的证明,因为资源将被适当设置,即使实施xs变化。

    另一种方式来确保订阅和资源都依赖于某些对象的生命周期是使用takeUntil操作符。

    如果忽略订阅 Disposable 是所期望的行为,这是如何去除编译器警告。

    1. let xs: Observable<E> ....
    2. _ = xs // <-- note the underscore
    3. .filter { ... }
    4. .switchLatest()
    5. .subscribe(onNext: {
    6. ...
    7. }, onError: {
    8. ...
    9. })

    未使用的observable(unused-observable)

    此代码定义过滤并从 xs 序列映射的 observable, 但忽略结果

    由于该代码只是定义了一个可观察序列(observable),然后忽略它,它实际上并没有做任何事情。

    你的意图可能是要么存储可观察序列(observable)定义并在以后使用它…

    1. let xs: Observable<E> ....
    2. let ys = xs // <--- names definition as `ys`