Skip to content

Instantly share code, notes, and snippets.

View Otbivnoe's full-sized avatar

Nikita Ermolenko Otbivnoe

View GitHub Profile
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 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 disposable2 = Disposables.create { print("disposed-2 ☠️") }
let serialDisposable = SerialDisposable()
print("set disposable1")
serialDisposable.disposable = disposable1
print("set disposable2")
serialDisposable.disposable = disposable2
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 binaryDisposable = Disposables.create(disposable1, disposable2)
print("dispose")
binaryDisposable.dispose()
// log:
// dispose
let disposable = Disposables.create() // useful when disposable mechanism is not necessary
disposable.dispose()
let observable = Observable<Void>.create { observer -> Disposable in
// run request
observer.onCompleted()
return Disposables.create {
// request.cancel()
print("disposed ☠️")
}
}
let disposable = observable.subscribe()
public static func create(with dispose: @escaping () -> ()) -> Cancelable {
return AnonymousDisposable(disposeAction: dispose)
}
static public func create() -> Disposable {
return NopDisposable.noOp
}
@Otbivnoe
Otbivnoe / ServicesComposition.swift
Created April 13, 2017 02:55 — forked from artemnovichkov/ServicesComposition.swift
Using protocol composition and generics for dependency injection in Interactors (VIPER, SOA, another cool keywords...)
protocol HasService1 {
var service1: Service1 { get }
}
protocol HasService2 {
var service2: Service2 { get }
}
class Service1 {}
class Service2 {}