From 7c73060c5c9aa3fd72bc0540cdbbbb2d03e591fe Mon Sep 17 00:00:00 2001 From: tarunon Date: Mon, 29 Feb 2016 18:12:08 +0900 Subject: [PATCH] Use `SchedulerType.scheduleRecursive` and `CompositeDisposable.removeDisposable`. --- RxSwift/Observables/Implementations/Delay.swift | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/RxSwift/Observables/Implementations/Delay.swift b/RxSwift/Observables/Implementations/Delay.swift index f90fa350..5b725a7a 100644 --- a/RxSwift/Observables/Implementations/Delay.swift +++ b/RxSwift/Observables/Implementations/Delay.swift @@ -38,13 +38,14 @@ class DelaySink // } default: let delayDisposable = SingleAssignmentDisposable() - if let _ = _group.addDisposable(delayDisposable) { - delayDisposable.disposable = _scheduler.scheduleRecursive((), dueTime: _dueTime) { _ in - self.forwardOn(event) + if let key = _group.addDisposable(delayDisposable) { + delayDisposable.disposable = _scheduler.scheduleRecursive((self, key), dueTime: _dueTime) { state, _ in + let (sink, key) = state + sink.forwardOn(event) + sink._group.removeDisposable(key) if event.isStopEvent { - self.dispose() + sink.dispose() } - delayDisposable.dispose() } } }