Механизм управления памятью в RxSwift - PullRequest
0 голосов
/ 14 ноября 2018

Я некоторое время изучал Rxswift, и пока могу применять Rxswift для своих проектов. Однако я до сих пор не понимаю, как RxSwift управляет ресурсами памяти, особенно объектами Disposable . Например:

func foo() {
            let s = Observable.of(1).subscribe(onNext: { print($0) })
            s.disposed(by: _disposeBag)
        }

В приведенном выше методе s является Одноразовым объектом, и, как я понимаю, объект сохраняется до тех пор, пока он не будет удален (либо путем освобождения _disposeBag , либо путем вызова .dispose () непосредственно на s), что означает, что что-то содержит сильную ссылку на s, но я не знаю, что это за что-то .

Я искал документацию по этому вопросу, но пока надежды нет. Может кто-нибудь указать мне правильное направление?

Заранее спасибо, ребята.

1 Ответ

0 голосов
/ 25 мая 2019

DisposeBag содержит строгую ссылку на одноразовое использование, когда вы вызываете disposed (by :), и при условии, что DisposeBag сохраняется UIViewController, например, когда UIViewController освобожден, DisposeBag будет освобожден и в его функции deinit ()он вызывает dispose () каждого сохраняемого объекта одноразового использования.

HTH

...