Skip to content

Instantly share code, notes, and snippets.

View Otbivnoe's full-sized avatar

Nikita Ermolenko Otbivnoe

View GitHub Profile
public static func create(with dispose: @escaping () -> ()) -> Cancelable {
return AnonymousDisposable(disposeAction: dispose)
}
let observable = Observable<Void>.create { observer -> Disposable in
// run request
observer.onCompleted()
return Disposables.create {
// request.cancel()
print("disposed ☠️")
}
}
let disposable = observable.subscribe()
let disposable = Disposables.create() // useful when disposable mechanism is not necessary
disposable.dispose()
let disposable1 = Disposables.create { print("disposed-1 ☠️") }
let disposable2 = Disposables.create { print("disposed-2 ☠️") }
let binaryDisposable = Disposables.create(disposable1, disposable2)
print("dispose")
binaryDisposable.dispose()
// log:
// dispose
public static func create(_ disposable1: Disposable, _ disposable2: Disposable) -> Cancelable {
return BinaryDisposable(disposable1, disposable2)
}
let disposable1 = Disposables.create { print("disposed-1 ☠️") }
let disposable2 = Disposables.create { print("disposed-2 ☠️") }
let serialDisposable = SerialDisposable()
print("set disposable1")
serialDisposable.disposable = disposable1
print("set disposable2")
serialDisposable.disposable = disposable2
let queue = DispatchQueue.global()
let scheduler = ConcurrentDispatchQueueScheduler(queue: queue)
let observable = Observable<Void>.create { observer in
observer.onCompleted()
return ScheduledDisposable(scheduler: scheduler, disposable: Disposables.create {
print("thread - \(Thread.current)")
})
}
let disposable1 = Disposables.create { print("disposed-1 ☠️") }
let refCountDisposable = RefCountDisposable(disposable: disposable1)
let holdDisposable1 = refCountDisposable.retain()
let holdDisposable2 = refCountDisposable.retain()
print("main dispose")
refCountDisposable.dispose()
let disposable1 = Disposables.create { print("disposed-1 ☠️") }
let disposable2 = Disposables.create { print("disposed-2 ☠️") }
let disposable3 = Disposables.create { print("disposed-3 ☠️") }
let disposable = CompositeDisposable(disposables: [disposable1, disposable2, disposable3])
print("dispose")
disposable.dispose()
// log:
let disposable1 = Disposables.create { print("disposed-1 ☠️") }
let disposable2 = Disposables.create { print("disposed-2 ☠️") }
let disposable3 = Disposables.create { print("disposed-3 ☠️") }
let disposable = CompositeDisposable(disposable1, disposable2)
print("dispose")
disposable.dispose()
print("insert disposable3")