diff --git a/Rx.playground/Pages/Combining_Operators.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Combining_Operators.xcplaygroundpage/Contents.swift index f0e5a1e95..e0c0a42ba 100644 --- a/Rx.playground/Pages/Combining_Operators.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Combining_Operators.xcplaygroundpage/Contents.swift @@ -16,14 +16,14 @@ Emits the specified sequence of elements before beginning to emit the elements f ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/startwith.png) */ example("startWith") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of("🐶", "🐱", "🐭", "🐹") .startWith("1️⃣") .startWith("2️⃣") .startWith("3️⃣", "🅰️", "🅱️") .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: > As this example demonstrates, `startWith` can be chained on a last-in-first-out basis, i.e., each successive `startWith`'s elements will be prepended before the prior `startWith`'s elements. @@ -33,7 +33,7 @@ example("startWith") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/merge.png) */ example("merge") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let subject1 = PublishSubject() let subject2 = PublishSubject() @@ -41,7 +41,7 @@ example("merge") { Observable.of(subject1, subject2) .merge() .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) subject1.onNext("🅰️") @@ -62,7 +62,7 @@ example("merge") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/zip.png) */ example("zip") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let stringSubject = PublishSubject() let intSubject = PublishSubject() @@ -71,7 +71,7 @@ example("zip") { "\(stringElement) \(intElement)" } .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) stringSubject.onNext("🅰️") stringSubject.onNext("🅱️") @@ -90,7 +90,7 @@ example("zip") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/combinelatest.png) */ example("combineLatest") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let stringSubject = PublishSubject() let intSubject = PublishSubject() @@ -99,7 +99,7 @@ example("combineLatest") { "\(stringElement) \(intElement)" } .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) stringSubject.onNext("🅰️") @@ -112,7 +112,7 @@ example("combineLatest") { } //: There is also a variant of `combineLatest` that takes an `Array` (or any other collection of `Observable` sequences): example("Array.combineLatest") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let stringObservable = Observable.just("❤️") let fruitObservable = Observable.from(["🍎", "🍐", "🍊"]) @@ -122,7 +122,7 @@ example("Array.combineLatest") { "\($0[0]) \($0[1]) \($0[2])" } .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: > Because the `combineLatest` variant that takes a collection passes an array of values to the selector function, it requires that all source `Observable` sequences are of the same type. @@ -132,7 +132,7 @@ example("Array.combineLatest") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/switch.png) */ example("switchLatest") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let subject1 = BehaviorSubject(value: "⚽️") let subject2 = BehaviorSubject(value: "🍎") @@ -142,7 +142,7 @@ example("switchLatest") { subjectsSubject.asObservable() .switchLatest() .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) subject1.onNext("🏈") subject1.onNext("🏀") @@ -161,7 +161,7 @@ example("switchLatest") { Merges two observable sequences into one observable sequence by combining each element from the first source with the latest element from the second source, if any. */ example("withLatestFrom") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let foodSubject = PublishSubject() let drinksSubject = PublishSubject() @@ -169,7 +169,7 @@ example("withLatestFrom") { foodSubject.asObservable() .withLatestFrom(drinksSubject) { "\($0) + \($1)" } .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) foodSubject.onNext("🥗") diff --git a/Rx.playground/Pages/Creating_and_Subscribing_to_Observables.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Creating_and_Subscribing_to_Observables.xcplaygroundpage/Contents.swift index 85ab41630..bfc4cbcf4 100644 --- a/Rx.playground/Pages/Creating_and_Subscribing_to_Observables.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Creating_and_Subscribing_to_Observables.xcplaygroundpage/Contents.swift @@ -15,7 +15,7 @@ import RxSwift Creates a sequence that never terminates and never emits any events. [More info](http://reactivex.io/documentation/operators/empty-never-throw.html) */ example("never") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let neverSequence = Observable.never() let neverSequenceSubscription = neverSequence @@ -23,7 +23,7 @@ example("never") { print("This will never be printed") } - neverSequenceSubscription.disposed(by: disposeBag) + neverSequenceSubscription.disposed(by: &disposeBag) } /*: ---- @@ -31,13 +31,13 @@ example("never") { Creates an empty `Observable` sequence that only emits a Completed event. [More info](http://reactivex.io/documentation/operators/empty-never-throw.html) */ example("empty") { - let disposeBag = DisposeBag() - + var disposeBag = DisposeBag() + Observable.empty() .subscribe { event in print(event) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: > This example also introduces chaining together creating and subscribing to an `Observable` sequence. @@ -46,13 +46,13 @@ example("empty") { Creates an `Observable` sequence with a single element. [More info](http://reactivex.io/documentation/operators/just.html) */ example("just") { - let disposeBag = DisposeBag() - + var disposeBag = DisposeBag() + Observable.just("🔴") .subscribe { event in print(event) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -60,13 +60,13 @@ example("just") { Creates an `Observable` sequence with a fixed number of elements. */ example("of") { - let disposeBag = DisposeBag() - + var disposeBag = DisposeBag() + Observable.of("🐶", "🐱", "🐭", "🐹") .subscribe(onNext: { element in print(element) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: > This example also introduces using the `subscribe(onNext:)` convenience method. Unlike `subscribe(_:)`, which subscribes an _event_ handler for all event types (Next, Error, and Completed), `subscribe(onNext:)` subscribes an _element_ handler that will ignore Error and Completed events and only produce Next event elements. There are also `subscribe(onError:)` and `subscribe(onCompleted:)` convenience methods, should you only want to subscribe to those event types. And there is a `subscribe(onNext:onError:onCompleted:onDisposed:)` method, which allows you to react to one or more event types and when the subscription is terminated for any reason, or disposed, in a single call: @@ -83,11 +83,11 @@ example("of") { Creates an `Observable` sequence from a `Sequence`, such as an `Array`, `Dictionary`, or `Set`. */ example("from") { - let disposeBag = DisposeBag() - + var disposeBag = DisposeBag() + Observable.from(["🐶", "🐱", "🐭", "🐹"]) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: > This example also demonstrates using the default argument name `$0` instead of explicitly naming the argument. @@ -96,8 +96,8 @@ example("from") { Creates a custom `Observable` sequence. [More info](http://reactivex.io/documentation/operators/create.html) */ example("create") { - let disposeBag = DisposeBag() - + var disposeBag = DisposeBag() + let myJust = { (element: String) -> Observable in return Observable.create { observer in observer.on(.next(element)) @@ -108,7 +108,7 @@ example("create") { myJust("🔴") .subscribe { print($0) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -116,11 +116,11 @@ example("create") { Creates an `Observable` sequence that emits a range of sequential integers and then terminates. [More info](http://reactivex.io/documentation/operators/range.html) */ example("range") { - let disposeBag = DisposeBag() - + var disposeBag = DisposeBag() + Observable.range(start: 1, count: 10) .subscribe { print($0) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -128,12 +128,12 @@ example("range") { Creates an `Observable` sequence that emits the given element indefinitely. [More info](http://reactivex.io/documentation/operators/repeat.html) */ example("repeatElement") { - let disposeBag = DisposeBag() - + var disposeBag = DisposeBag() + Observable.repeatElement("🔴") .take(3) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: > This example also introduces using the `take` operator to return a specified number of elements from the start of a sequence. @@ -142,15 +142,15 @@ example("repeatElement") { Creates an `Observable` sequence that generates values for as long as the provided condition evaluates to `true`. */ example("generate") { - let disposeBag = DisposeBag() - + var disposeBag = DisposeBag() + Observable.generate( initialState: 0, condition: { $0 < 3 }, iterate: { $0 + 1 } ) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -158,7 +158,7 @@ example("generate") { Creates a new `Observable` sequence for each subscriber. [More info](http://reactivex.io/documentation/operators/defer.html) */ example("deferred") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() var count = 1 let deferredSequence = Observable.deferred { @@ -176,11 +176,11 @@ example("deferred") { deferredSequence .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) - + .disposed(by: &disposeBag) + deferredSequence .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -188,11 +188,11 @@ example("deferred") { Creates an `Observable` sequence that emits no items and immediately terminates with an error. */ example("error") { - let disposeBag = DisposeBag() - + var disposeBag = DisposeBag() + Observable.error(TestError.test) .subscribe { print($0) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -200,12 +200,12 @@ example("error") { Invokes a side-effect action for each emitted event and returns (passes through) the original event. [More info](http://reactivex.io/documentation/operators/do.html) */ example("doOn") { - let disposeBag = DisposeBag() - + var disposeBag = DisposeBag() + Observable.of("🍎", "🍐", "🍊", "🍋") .do(onNext: { print("Intercepted:", $0) }, afterNext: { print("Intercepted after:", $0) }, onError: { print("Intercepted error:", $0) }, afterError: { print("Intercepted after error:", $0) }, onCompleted: { print("Completed") }, afterCompleted: { print("After completed") }) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } //: > There are also `doOnNext(_:)`, `doOnError(_:)`, and `doOnCompleted(_:)` convenience methods to intercept those specific events, and `doOn(onNext:onError:onCompleted:)` to intercept one or more events in a single call. diff --git a/Rx.playground/Pages/Debugging_Operators.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Debugging_Operators.xcplaygroundpage/Contents.swift index dcb10dd6b..0ed40d1e7 100644 --- a/Rx.playground/Pages/Debugging_Operators.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Debugging_Operators.xcplaygroundpage/Contents.swift @@ -15,7 +15,7 @@ import RxSwift Prints out all subscriptions, events, and disposals. */ example("debug") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() var count = 1 let sequenceThatErrors = Observable.create { observer in @@ -41,7 +41,7 @@ example("debug") { .retry(3) .debug() .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -53,7 +53,7 @@ example("debug") { example("RxSwift.Resources.total") { print(RxSwift.Resources.total) - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() print(RxSwift.Resources.total) diff --git a/Rx.playground/Pages/Error_Handling_Operators.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Error_Handling_Operators.xcplaygroundpage/Contents.swift index 456b478ff..7f6674ce8 100644 --- a/Rx.playground/Pages/Error_Handling_Operators.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Error_Handling_Operators.xcplaygroundpage/Contents.swift @@ -16,14 +16,14 @@ Recovers from an Error event by returning an `Observable` sequence that emits a ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/catch.png) */ example("catchErrorJustReturn") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let sequenceThatFails = PublishSubject() sequenceThatFails .catchAndReturn("😊") .subscribe { print($0) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) sequenceThatFails.onNext("😬") sequenceThatFails.onNext("😨") @@ -38,7 +38,7 @@ example("catchErrorJustReturn") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/catch.png) */ example("catchError") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let sequenceThatFails = PublishSubject() let recoverySequence = PublishSubject() @@ -49,7 +49,7 @@ example("catchError") { return recoverySequence } .subscribe { print($0) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) sequenceThatFails.onNext("😬") sequenceThatFails.onNext("😨") @@ -66,7 +66,7 @@ example("catchError") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/retry.png) */ example("retry") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() var count = 1 let sequenceThatErrors = Observable.create { observer in @@ -91,7 +91,7 @@ example("retry") { sequenceThatErrors .retry() .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -100,7 +100,7 @@ Recovers repeatedly from Error events by resubscribing to the `Observable` seque ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/retry.png) */ example("retry maxAttemptCount") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() var count = 1 let sequenceThatErrors = Observable.create { observer in @@ -125,7 +125,7 @@ example("retry maxAttemptCount") { sequenceThatErrors .retry(3) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } //: [Next](@next) - [Table of Contents](Table_of_Contents) diff --git a/Rx.playground/Pages/Filtering_and_Conditional_Operators.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Filtering_and_Conditional_Operators.xcplaygroundpage/Contents.swift index 10ca13f67..0f6efcc7e 100644 --- a/Rx.playground/Pages/Filtering_and_Conditional_Operators.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Filtering_and_Conditional_Operators.xcplaygroundpage/Contents.swift @@ -16,7 +16,7 @@ Emits only those elements from an `Observable` sequence that meet the specified ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/filter.png) */ example("filter") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of( "🐱", "🐰", "🐶", @@ -26,7 +26,7 @@ example("filter") { $0 == "🐱" } .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -35,12 +35,12 @@ example("filter") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/distinct.png) */ example("distinctUntilChanged") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of("🐱", "🐷", "🐱", "🐱", "🐱", "🐵", "🐱") .distinctUntilChanged() .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -49,12 +49,12 @@ example("distinctUntilChanged") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/elementat.png) */ example("elementAt") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵") .element(at: 3) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -62,31 +62,31 @@ example("elementAt") { Emits only the first element (or the first element that meets a condition) emitted by an `Observable` sequence. Will throw an error if the `Observable` sequence does not emit exactly one element. */ example("single") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵") .single() .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } example("single with conditions") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵") .single { $0 == "🐸" } .subscribe { print($0) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) Observable.of("🐱", "🐰", "🐶", "🐱", "🐰", "🐶") .single { $0 == "🐰" } .subscribe { print($0) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵") .single { $0 == "🔵" } .subscribe { print($0) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -95,12 +95,12 @@ example("single with conditions") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/take.png) */ example("take") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵") .take(3) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -109,12 +109,12 @@ example("take") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/takelast.png) */ example("takeLast") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵") .takeLast(3) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -123,12 +123,12 @@ example("takeLast") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/takewhile.png) */ example("takeWhile") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of(1, 2, 3, 4, 5, 6) .take(while: { $0 < 4 }) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -137,7 +137,7 @@ example("takeWhile") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/takeuntil.png) */ example("takeUntil") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let sourceSequence = PublishSubject() let referenceSequence = PublishSubject() @@ -145,7 +145,7 @@ example("takeUntil") { sourceSequence .take(until: referenceSequence) .subscribe { print($0) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) sourceSequence.onNext("🐱") sourceSequence.onNext("🐰") @@ -164,12 +164,12 @@ example("takeUntil") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/skip.png) */ example("skip") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵") .skip(2) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -178,12 +178,12 @@ example("skip") { ![](http://reactivex.io/documentation/operators/images/skipWhile.c.png) */ example("skipWhile") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of(1, 2, 3, 4, 5, 6) .skip(while: { $0 < 4 }) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -191,14 +191,14 @@ example("skipWhile") { Suppresses emitting the elements from the beginning of an `Observable` sequence that meet the specified condition, and emits the remaining elements. The closure is also passed each element's index. */ example("skipWhileWithIndex") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of("🐱", "🐰", "🐶", "🐸", "🐷", "🐵") .enumerated() .skip(while: { $0.index < 3 }) .map { $0.element } .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -207,7 +207,7 @@ example("skipWhileWithIndex") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/skipuntil.png) */ example("skipUntil") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let sourceSequence = PublishSubject() let referenceSequence = PublishSubject() @@ -215,7 +215,7 @@ example("skipUntil") { sourceSequence .skip(until: referenceSequence) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) sourceSequence.onNext("🐱") sourceSequence.onNext("🐰") diff --git a/Rx.playground/Pages/Mathematical_and_Aggregate_Operators.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Mathematical_and_Aggregate_Operators.xcplaygroundpage/Contents.swift index 215132ec3..a9c3e0b54 100644 --- a/Rx.playground/Pages/Mathematical_and_Aggregate_Operators.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Mathematical_and_Aggregate_Operators.xcplaygroundpage/Contents.swift @@ -16,12 +16,12 @@ import RxSwift ![](http://reactivex.io/documentation/operators/images/to.c.png) */ example("toArray") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.range(start: 1, count: 10) .toArray() .subscribe { print($0) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -30,12 +30,12 @@ example("toArray") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/reduce.png) */ example("reduce") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of(10, 100, 1000) .reduce(1, accumulator: +) .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -44,7 +44,7 @@ example("reduce") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/concat.png) */ example("concat") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let subject1 = BehaviorSubject(value: "🍎") let subject2 = BehaviorSubject(value: "🐶") @@ -54,7 +54,7 @@ example("concat") { subjectsSubject.asObservable() .concat() .subscribe { print($0) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) subject1.onNext("🍐") subject1.onNext("🍊") diff --git a/Rx.playground/Pages/Transforming_Operators.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Transforming_Operators.xcplaygroundpage/Contents.swift index 0a9a5cb0b..6f7ff76f8 100644 --- a/Rx.playground/Pages/Transforming_Operators.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Transforming_Operators.xcplaygroundpage/Contents.swift @@ -16,11 +16,11 @@ Operators that transform Next event elements emitted by an `Observable` sequence ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/map.png) */ example("map") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of(1, 2, 3) .map { $0 * $0 } .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } /*: ---- @@ -29,7 +29,7 @@ example("map") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/flatmap.png) */ example("flatMap and flatMapLatest") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() struct Player { init(score: Int) { @@ -47,7 +47,7 @@ example("flatMap and flatMapLatest") { player.asObservable() .flatMap { $0.score.asObservable() } // Change flatMap to flatMapLatest and observe change in printed output .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) 👦🏻.score.onNext(85) @@ -69,14 +69,14 @@ example("flatMap and flatMapLatest") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/scan.png) */ example("scan") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() Observable.of(10, 100, 1000) .scan(1) { aggregateValue, newValue in aggregateValue + newValue } .subscribe(onNext: { print($0) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } //: [Next](@next) - [Table of Contents](Table_of_Contents) diff --git a/Rx.playground/Pages/TryYourself.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/TryYourself.xcplaygroundpage/Contents.swift index 5bd71cf59..40721b7cd 100644 --- a/Rx.playground/Pages/TryYourself.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/TryYourself.xcplaygroundpage/Contents.swift @@ -14,9 +14,9 @@ import RxSwift playgroundShouldContinueIndefinitely() example("Try yourself") { - // let disposeBag = DisposeBag() + // var disposeBag = DisposeBag() _ = Observable.just("Hello, RxSwift!") .debug("Observable") .subscribe() - // .disposed(by: disposeBag) // If dispose bag is used instead, sequence will terminate on scope exit + // .disposed(by: &disposeBag) // If dispose bag is used instead, sequence will terminate on scope exit } diff --git a/Rx.playground/Pages/Working_with_Subjects.xcplaygroundpage/Contents.swift b/Rx.playground/Pages/Working_with_Subjects.xcplaygroundpage/Contents.swift index 1df8445aa..7869a767c 100644 --- a/Rx.playground/Pages/Working_with_Subjects.xcplaygroundpage/Contents.swift +++ b/Rx.playground/Pages/Working_with_Subjects.xcplaygroundpage/Contents.swift @@ -35,14 +35,14 @@ func writeSequenceToConsole(name: String, sequence: Sour ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/publishsubject.png "PublishSubject") */ example("PublishSubject") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let subject = PublishSubject() - subject.addObserver("1").disposed(by: disposeBag) + subject.addObserver("1").disposed(by: &disposeBag) subject.onNext("🐶") subject.onNext("🐱") - subject.addObserver("2").disposed(by: disposeBag) + subject.addObserver("2").disposed(by: &disposeBag) subject.onNext("🅰️") subject.onNext("🅱️") } @@ -54,14 +54,14 @@ example("PublishSubject") { ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/replaysubject.png) */ example("ReplaySubject") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let subject = ReplaySubject.create(bufferSize: 1) - subject.addObserver("1").disposed(by: disposeBag) + subject.addObserver("1").disposed(by: &disposeBag) subject.onNext("🐶") subject.onNext("🐱") - subject.addObserver("2").disposed(by: disposeBag) + subject.addObserver("2").disposed(by: &disposeBag) subject.onNext("🅰️") subject.onNext("🅱️") } @@ -72,18 +72,18 @@ Broadcasts new events to all subscribers, and the most recent (or initial) value ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/behaviorsubject.png) */ example("BehaviorSubject") { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() let subject = BehaviorSubject(value: "🔴") - subject.addObserver("1").disposed(by: disposeBag) + subject.addObserver("1").disposed(by: &disposeBag) subject.onNext("🐶") subject.onNext("🐱") - subject.addObserver("2").disposed(by: disposeBag) + subject.addObserver("2").disposed(by: &disposeBag) subject.onNext("🅰️") subject.onNext("🅱️") - subject.addObserver("3").disposed(by: disposeBag) + subject.addObserver("3").disposed(by: &disposeBag) subject.onNext("🍐") subject.onNext("🍊") } diff --git a/RxExample/RxDataSources/RxDataSources/RxCollectionViewSectionedAnimatedDataSource.swift b/RxExample/RxDataSources/RxDataSources/RxCollectionViewSectionedAnimatedDataSource.swift index eb825a609..4bebb656d 100644 --- a/RxExample/RxDataSources/RxDataSources/RxCollectionViewSectionedAnimatedDataSource.swift +++ b/RxExample/RxDataSources/RxDataSources/RxCollectionViewSectionedAnimatedDataSource.swift @@ -50,14 +50,14 @@ open class RxCollectionViewSectionedAnimatedDataSource(value: NSAttributedString(string: "")) _ = textField2.rx.attributedText <-> attributedTextValue @@ -159,7 +159,7 @@ class APIWrappersViewController: ViewController { .subscribe(onNext: { [weak self] x in self?.debug("UITextField attributedText \(x?.description ?? "")") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } // MARK: UIGestureRecognizer @@ -168,7 +168,7 @@ class APIWrappersViewController: ViewController { .subscribe(onNext: { [weak self] x in self?.debug("UIGestureRecognizer event \(x.state.rawValue)") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) // MARK: UITextView @@ -181,7 +181,7 @@ class APIWrappersViewController: ViewController { .subscribe(onNext: { [weak self] x in self?.debug("UITextView text \(x)") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) let attributedTextViewValue = BehaviorRelay(value: NSAttributedString(string: "")) _ = textView2.rx.attributedText <-> attributedTextViewValue @@ -190,7 +190,7 @@ class APIWrappersViewController: ViewController { .subscribe(onNext: { [weak self] x in self?.debug("UITextView attributedText \(x?.description ?? "")") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) // MARK: CLLocationManager manager.requestWhenInUseAuthorization() @@ -199,7 +199,7 @@ class APIWrappersViewController: ViewController { .subscribe(onNext: { x in print("rx.didUpdateLocations \(x)") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) _ = manager.rx.didFailWithError .subscribe(onNext: { x in @@ -210,7 +210,7 @@ class APIWrappersViewController: ViewController { .subscribe(onNext: { status in print("Authorization status \(status)") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) manager.startUpdatingLocation() diff --git a/RxExample/RxExample/Examples/Calculator/CalculatorViewController.swift b/RxExample/RxExample/Examples/Calculator/CalculatorViewController.swift index 4f01d3a91..fc61aa381 100644 --- a/RxExample/RxExample/Examples/Calculator/CalculatorViewController.swift +++ b/RxExample/RxExample/Examples/Calculator/CalculatorViewController.swift @@ -84,7 +84,7 @@ class CalculatorViewController: ViewController { scheduledFeedback: uiFeedback ) .subscribe() - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } func formatResult(_ result: String) -> String { diff --git a/RxExample/RxExample/Examples/GeolocationExample/GeolocationViewController.swift b/RxExample/RxExample/Examples/GeolocationExample/GeolocationViewController.swift index 1685daa50..771b9dcc3 100644 --- a/RxExample/RxExample/Examples/GeolocationExample/GeolocationViewController.swift +++ b/RxExample/RxExample/Examples/GeolocationExample/GeolocationViewController.swift @@ -35,23 +35,23 @@ class GeolocationViewController: ViewController { geolocationService.authorized .drive(noGeolocationView.rx.isHidden) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) geolocationService.location .drive(label.rx.coordinates) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) button.rx.tap .bind { [weak self] _ -> Void in self?.openAppPreferences() } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) button2.rx.tap .bind { [weak self] _ -> Void in self?.openAppPreferences() } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } private func openAppPreferences() { diff --git a/RxExample/RxExample/Examples/GitHubSearchRepositories/GitHubSearchRepositoriesViewController.swift b/RxExample/RxExample/Examples/GitHubSearchRepositories/GitHubSearchRepositoriesViewController.swift index 0837d5fcd..36398feb2 100644 --- a/RxExample/RxExample/Examples/GitHubSearchRepositories/GitHubSearchRepositoriesViewController.swift +++ b/RxExample/RxExample/Examples/GitHubSearchRepositories/GitHubSearchRepositoriesViewController.swift @@ -64,20 +64,20 @@ class GitHubSearchRepositoriesViewController: ViewController, UITableViewDelegat state .map { $0.isOffline } .drive(navigationController!.rx.isOffline) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) state .map { $0.repositories } .distinctUntilChanged() .map { [SectionModel(model: "Repositories", items: $0.value)] } .drive(tableView.rx.items(dataSource: dataSource)) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) tableView.rx.modelSelected(Repository.self) .subscribe(onNext: { repository in UIApplication.shared.open(repository.url) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) state .map { $0.isLimitExceeded } @@ -96,7 +96,7 @@ class GitHubSearchRepositoriesViewController: ViewController, UITableViewDelegat alert.runModal() #endif }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) tableView.rx.contentOffset .subscribe { _ in @@ -104,17 +104,17 @@ class GitHubSearchRepositoriesViewController: ViewController, UITableViewDelegat _ = searchBar.resignFirstResponder() } } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) // so normal delegate customization can also be used tableView.rx.setDelegate(self) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) // activity indicator in status bar // { activityIndicator .drive(UIApplication.shared.rx.isNetworkActivityIndicatorVisible) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) // } } diff --git a/RxExample/RxExample/Examples/GitHubSignup/UsingDriver/GitHubSignupViewController2.swift b/RxExample/RxExample/Examples/GitHubSignup/UsingDriver/GitHubSignupViewController2.swift index 07f26ffdc..cbe8aa50b 100644 --- a/RxExample/RxExample/Examples/GitHubSignup/UsingDriver/GitHubSignupViewController2.swift +++ b/RxExample/RxExample/Examples/GitHubSignup/UsingDriver/GitHubSignupViewController2.swift @@ -46,29 +46,29 @@ class GitHubSignupViewController2 : ViewController { self?.signupOutlet.isEnabled = valid self?.signupOutlet.alpha = valid ? 1.0 : 0.5 }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) viewModel.validatedUsername .drive(usernameValidationOutlet.rx.validationResult) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) viewModel.validatedPassword .drive(passwordValidationOutlet.rx.validationResult) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) viewModel.validatedPasswordRepeated .drive(repeatedPasswordValidationOutlet.rx.validationResult) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) viewModel.signingIn .drive(signingUpOulet.rx.isAnimating) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) viewModel.signedIn .drive(onNext: { signedIn in print("User signed in \(signedIn)") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) //} let tapBackground = UITapGestureRecognizer() @@ -76,7 +76,7 @@ class GitHubSignupViewController2 : ViewController { .subscribe(onNext: { [weak self] _ in self?.view.endEditing(true) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) view.addGestureRecognizer(tapBackground) } } diff --git a/RxExample/RxExample/Examples/GitHubSignup/UsingVanillaObservables/GitHubSignupViewController1.swift b/RxExample/RxExample/Examples/GitHubSignup/UsingVanillaObservables/GitHubSignupViewController1.swift index 9acbb794f..0f278e63e 100644 --- a/RxExample/RxExample/Examples/GitHubSignup/UsingVanillaObservables/GitHubSignupViewController1.swift +++ b/RxExample/RxExample/Examples/GitHubSignup/UsingVanillaObservables/GitHubSignupViewController1.swift @@ -46,29 +46,29 @@ class GitHubSignupViewController1 : ViewController { self?.signupOutlet.isEnabled = valid self?.signupOutlet.alpha = valid ? 1.0 : 0.5 }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) viewModel.validatedUsername .bind(to: usernameValidationOutlet.rx.validationResult) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) viewModel.validatedPassword .bind(to: passwordValidationOutlet.rx.validationResult) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) viewModel.validatedPasswordRepeated .bind(to: repeatedPasswordValidationOutlet.rx.validationResult) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) viewModel.signingIn .bind(to: signingUpOulet.rx.isAnimating) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) viewModel.signedIn .subscribe(onNext: { signedIn in print("User signed in \(signedIn)") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) //} let tapBackground = UITapGestureRecognizer() @@ -76,7 +76,7 @@ class GitHubSignupViewController1 : ViewController { .subscribe(onNext: { [weak self] _ in self?.view.endEditing(true) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) view.addGestureRecognizer(tapBackground) } } diff --git a/RxExample/RxExample/Examples/ImagePicker/ImagePickerController.swift b/RxExample/RxExample/Examples/ImagePicker/ImagePickerController.swift index 727cc8585..b6abfb784 100644 --- a/RxExample/RxExample/Examples/ImagePicker/ImagePickerController.swift +++ b/RxExample/RxExample/Examples/ImagePicker/ImagePickerController.swift @@ -36,7 +36,7 @@ class ImagePickerController: ViewController { return info[.originalImage] as? UIImage } .bind(to: imageView.rx.image) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) galleryButton.rx.tap .flatMapLatest { [weak self] _ in @@ -53,7 +53,7 @@ class ImagePickerController: ViewController { return info[.originalImage] as? UIImage } .bind(to: imageView.rx.image) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) cropButton.rx.tap .flatMapLatest { [weak self] _ in @@ -68,7 +68,7 @@ class ImagePickerController: ViewController { return info[.editedImage] as? UIImage } .bind(to: imageView.rx.image) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } } diff --git a/RxExample/RxExample/Examples/Numbers/NumbersViewController.swift b/RxExample/RxExample/Examples/Numbers/NumbersViewController.swift index 2ffc30f90..140443f1c 100644 --- a/RxExample/RxExample/Examples/Numbers/NumbersViewController.swift +++ b/RxExample/RxExample/Examples/Numbers/NumbersViewController.swift @@ -25,6 +25,6 @@ class NumbersViewController: ViewController { } .map { $0.description } .bind(to: result.rx.text) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } } diff --git a/RxExample/RxExample/Examples/SimpleTableViewExample/SimpleTableViewExampleViewController.swift b/RxExample/RxExample/Examples/SimpleTableViewExample/SimpleTableViewExampleViewController.swift index 4605b1317..6a05e4ea9 100644 --- a/RxExample/RxExample/Examples/SimpleTableViewExample/SimpleTableViewExampleViewController.swift +++ b/RxExample/RxExample/Examples/SimpleTableViewExample/SimpleTableViewExampleViewController.swift @@ -24,7 +24,7 @@ class SimpleTableViewExampleViewController : ViewController, UITableViewDelegate .bind(to: tableView.rx.items(cellIdentifier: "Cell", cellType: UITableViewCell.self)) { (row, element, cell) in cell.textLabel?.text = "\(element) @ row \(row)" } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) tableView.rx @@ -32,14 +32,14 @@ class SimpleTableViewExampleViewController : ViewController, UITableViewDelegate .subscribe(onNext: { value in DefaultWireframe.presentAlert("Tapped `\(value)`") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) tableView.rx .itemAccessoryButtonTapped .subscribe(onNext: { indexPath in DefaultWireframe.presentAlert("Tapped Detail @ \(indexPath.section),\(indexPath.row)") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } diff --git a/RxExample/RxExample/Examples/SimpleTableViewExampleSectioned/SimpleTableViewExampleSectionedViewController.swift b/RxExample/RxExample/Examples/SimpleTableViewExampleSectioned/SimpleTableViewExampleSectionedViewController.swift index 2d4f24439..d936ae3e2 100644 --- a/RxExample/RxExample/Examples/SimpleTableViewExampleSectioned/SimpleTableViewExampleSectionedViewController.swift +++ b/RxExample/RxExample/Examples/SimpleTableViewExampleSectioned/SimpleTableViewExampleSectionedViewController.swift @@ -52,7 +52,7 @@ class SimpleTableViewExampleSectionedViewController items .bind(to: tableView.rx.items(dataSource: dataSource)) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) tableView.rx .itemSelected @@ -62,11 +62,11 @@ class SimpleTableViewExampleSectionedViewController .subscribe(onNext: { pair in DefaultWireframe.presentAlert("Tapped `\(pair.1)` @ \(pair.0)") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) tableView.rx .setDelegate(self) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } // to prevent swipe to delete behavior diff --git a/RxExample/RxExample/Examples/SimpleValidation/SimpleValidationViewController.swift b/RxExample/RxExample/Examples/SimpleValidation/SimpleValidationViewController.swift index 5fcf0e17f..69e3e4fb5 100644 --- a/RxExample/RxExample/Examples/SimpleValidation/SimpleValidationViewController.swift +++ b/RxExample/RxExample/Examples/SimpleValidation/SimpleValidationViewController.swift @@ -42,23 +42,23 @@ class SimpleValidationViewController : ViewController { usernameValid .bind(to: passwordOutlet.rx.isEnabled) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) usernameValid .bind(to: usernameValidOutlet.rx.isHidden) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) passwordValid .bind(to: passwordValidOutlet.rx.isHidden) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) everythingValid .bind(to: doSomethingOutlet.rx.isEnabled) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) doSomethingOutlet.rx.tap .subscribe(onNext: { [weak self] _ in self?.showAlert() }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } func showAlert() { diff --git a/RxExample/RxExample/Examples/TableViewPartialUpdates/PartialUpdatesViewController.swift b/RxExample/RxExample/Examples/TableViewPartialUpdates/PartialUpdatesViewController.swift index 8891d378c..efd2a06e8 100644 --- a/RxExample/RxExample/Examples/TableViewPartialUpdates/PartialUpdatesViewController.swift +++ b/RxExample/RxExample/Examples/TableViewPartialUpdates/PartialUpdatesViewController.swift @@ -89,11 +89,11 @@ class PartialUpdatesViewController : ViewController { self.sections.asObservable() .bind(to: partialUpdatesTableViewOutlet.rx.items(dataSource: tvAnimatedDataSource)) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) self.sections.asObservable() .bind(to: reloadTableViewOutlet.rx.items(dataSource: reloadDataSource)) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) // Collection view logic works, but when clicking fast because of internal bugs // collection view will sometimes get confused. I know what you are thinking, @@ -115,7 +115,7 @@ class PartialUpdatesViewController : ViewController { self.sections.asObservable() .bind(to: partialUpdatesCollectionViewOutlet.rx.itemsWithDataSource(cvAnimatedDataSource)) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) #else let cvReloadDataSource = RxCollectionViewSectionedReloadDataSource( configureCell: configureCollectionViewCell, @@ -123,7 +123,7 @@ class PartialUpdatesViewController : ViewController { ) self.sections.asObservable() .bind(to: partialUpdatesCollectionViewOutlet.rx.items(dataSource: cvReloadDataSource)) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) #endif // touches @@ -132,14 +132,14 @@ class PartialUpdatesViewController : ViewController { .subscribe(onNext: { [weak self] i in print("Let me guess, it's .... It's \(String(describing: self?.generator.sections[i.section].items[i.item])), isn't it? Yeah, I've got it.") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) Observable.of(partialUpdatesTableViewOutlet.rx.itemSelected, reloadTableViewOutlet.rx.itemSelected) .merge() .subscribe(onNext: { [weak self] i in print("I have a feeling it's .... \(String(describing: self?.generator.sections[i.section].items[i.item]))?") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } override func viewWillDisappear(_ animated: Bool) { diff --git a/RxExample/RxExample/Examples/TableViewWithEditingCommands/DetailViewController.swift b/RxExample/RxExample/Examples/TableViewWithEditingCommands/DetailViewController.swift index cb8caf6bb..c7b09ce9f 100644 --- a/RxExample/RxExample/Examples/TableViewWithEditingCommands/DetailViewController.swift +++ b/RxExample/RxExample/Examples/TableViewWithEditingCommands/DetailViewController.swift @@ -33,7 +33,7 @@ class DetailViewController: ViewController { .observe(on:`$`.mainScheduler) .catchAndReturn(nil) .subscribe(imageView.rx.image) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) label.text = user.firstName + " " + user.lastName } diff --git a/RxExample/RxExample/Examples/TableViewWithEditingCommands/TableViewWithEditingCommandsViewController.swift b/RxExample/RxExample/Examples/TableViewWithEditingCommands/TableViewWithEditingCommandsViewController.swift index 10eb6ea4b..ddf98977f 100644 --- a/RxExample/RxExample/Examples/TableViewWithEditingCommands/TableViewWithEditingCommandsViewController.swift +++ b/RxExample/RxExample/Examples/TableViewWithEditingCommands/TableViewWithEditingCommandsViewController.swift @@ -121,12 +121,12 @@ class TableViewWithEditingCommandsViewController: ViewController, UITableViewDel scheduledFeedback: uiFeedback, initialLoadFeedback ) .subscribe() - .disposed(by: disposeBag) + .disposed(by: &disposeBag) // customization using delegate // RxTableViewDelegateBridge will forward correct messages tableView.rx.setDelegate(self) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } override func setEditing(_ editing: Bool, animated: Bool) { diff --git a/RxExample/RxExample/Examples/UIPickerViewExample/CustomPickerViewAdapterExampleViewController.swift b/RxExample/RxExample/Examples/UIPickerViewExample/CustomPickerViewAdapterExampleViewController.swift index 0ca3fa3f3..ca38d6800 100644 --- a/RxExample/RxExample/Examples/UIPickerViewExample/CustomPickerViewAdapterExampleViewController.swift +++ b/RxExample/RxExample/Examples/UIPickerViewExample/CustomPickerViewAdapterExampleViewController.swift @@ -18,13 +18,13 @@ final class CustomPickerViewAdapterExampleViewController: ViewController { Observable.just([[1, 2, 3], [5, 8, 13], [21, 34]]) .bind(to: pickerView.rx.items(adapter: PickerViewViewAdapter())) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) pickerView.rx.modelSelected(Int.self) .subscribe(onNext: { models in print(models) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } } diff --git a/RxExample/RxExample/Examples/UIPickerViewExample/SimplePickerViewExampleViewController.swift b/RxExample/RxExample/Examples/UIPickerViewExample/SimplePickerViewExampleViewController.swift index b576b68bd..881d29f65 100644 --- a/RxExample/RxExample/Examples/UIPickerViewExample/SimplePickerViewExampleViewController.swift +++ b/RxExample/RxExample/Examples/UIPickerViewExample/SimplePickerViewExampleViewController.swift @@ -23,14 +23,14 @@ final class SimplePickerViewExampleViewController: ViewController { .bind(to: pickerView1.rx.itemTitles) { _, item in return "\(item)" } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) pickerView1.rx.modelSelected(Int.self) .subscribe(onNext: { models in print("models selected 1: \(models)") }) - .disposed(by: disposeBag) - + .disposed(by: &disposeBag) + Observable.just([1, 2, 3]) .bind(to: pickerView2.rx.itemAttributedTitles) { _, item in return NSAttributedString(string: "\(item)", @@ -39,26 +39,26 @@ final class SimplePickerViewExampleViewController: ViewController { NSAttributedString.Key.underlineStyle: NSUnderlineStyle.double.rawValue ]) } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) pickerView2.rx.modelSelected(Int.self) .subscribe(onNext: { models in print("models selected 2: \(models)") }) - .disposed(by: disposeBag) - + .disposed(by: &disposeBag) + Observable.just([UIColor.red, UIColor.green, UIColor.blue]) .bind(to: pickerView3.rx.items) { _, item, _ in let view = UIView() view.backgroundColor = item return view } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) pickerView3.rx.modelSelected(UIColor.self) .subscribe(onNext: { models in print("models selected 3: \(models)") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } } diff --git a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/CollectionViewImageCell.swift b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/CollectionViewImageCell.swift index c4f4d3222..57bda0c92 100644 --- a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/CollectionViewImageCell.swift +++ b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/CollectionViewImageCell.swift @@ -13,16 +13,16 @@ import RxCocoa public class CollectionViewImageCell: UICollectionViewCell { @IBOutlet var imageOutlet: UIImageView! - var disposeBag: DisposeBag? + var disposeBag: DisposeBag = DisposeBag() var downloadableImage: Observable?{ didSet{ - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() self.downloadableImage? .asDriver(onErrorJustReturn: DownloadableImage.offlinePlaceholder) .drive(imageOutlet.rx.downloadableImageAnimated(CATransitionType.fade.rawValue)) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) self.disposeBag = disposeBag } @@ -32,7 +32,7 @@ public class CollectionViewImageCell: UICollectionViewCell { super.prepareForReuse() downloadableImage = nil - disposeBag = nil + disposeBag = DisposeBag() } deinit { diff --git a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchCell.swift b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchCell.swift index 8f5aa24a9..8dbce3a60 100644 --- a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchCell.swift +++ b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchCell.swift @@ -16,7 +16,7 @@ public class WikipediaSearchCell: UITableViewCell { @IBOutlet var URLOutlet: UILabel! @IBOutlet var imagesOutlet: UICollectionView! - var disposeBag: DisposeBag? + var disposeBag: DisposeBag = DisposeBag() let imageService = DefaultImageService.sharedImageService @@ -28,7 +28,7 @@ public class WikipediaSearchCell: UITableViewCell { var viewModel: SearchResultViewModel? { didSet { - let disposeBag = DisposeBag() + var disposeBag = DisposeBag() guard let viewModel = viewModel else { return @@ -37,7 +37,7 @@ public class WikipediaSearchCell: UITableViewCell { viewModel.title .map(Optional.init) .drive(self.titleOutlet.rx.text) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) self.URLOutlet.text = viewModel.searchResult.URL.absoluteString @@ -50,9 +50,9 @@ public class WikipediaSearchCell: UITableViewCell { //cell.installHackBecauseOfAutomationLeaksOnIOS10(firstViewThatDoesntLeak: self!.superview!.superview!) #endif } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) - self.disposeBag = disposeBag + self.disposeBag = consume disposeBag #if DEBUG self.installHackBecauseOfAutomationLeaksOnIOS10(firstViewThatDoesntLeak: self.superview!.superview!) @@ -64,7 +64,7 @@ public class WikipediaSearchCell: UITableViewCell { super.prepareForReuse() self.viewModel = nil - self.disposeBag = nil + self.disposeBag = DisposeBag() } deinit { @@ -73,7 +73,7 @@ public class WikipediaSearchCell: UITableViewCell { } private protocol ReusableView: AnyObject { - var disposeBag: DisposeBag? { get } + var disposeBag: DisposeBag { get set } func prepareForReuse() } @@ -99,7 +99,7 @@ private extension ReusableView { firstViewThatDoesntLeak.rx.deallocated.subscribe(onNext: { [weak self] _ in self?.prepareForReuse() }) - .disposed(by: self.disposeBag!) + .disposed(by: &self.disposeBag) } } } diff --git a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchViewController.swift b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchViewController.swift index be021d4ce..a2314b098 100644 --- a/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchViewController.swift +++ b/RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchViewController.swift @@ -60,12 +60,12 @@ class WikipediaSearchViewController: ViewController { .drive(resultsTableView.rx.items(cellIdentifier: "WikipediaSearchCell", cellType: WikipediaSearchCell.self)) { (_, viewModel, cell) in cell.viewModel = viewModel } - .disposed(by: disposeBag) + .disposed(by: &disposeBag) results .map { $0.count != 0 } .drive(self.emptyView.rx.isHidden) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } func configureKeyboardDismissesOnScroll() { @@ -78,7 +78,7 @@ class WikipediaSearchViewController: ViewController { _ = searchBar?.resignFirstResponder() } }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } func configureNavigateOnRowClick() { @@ -89,7 +89,7 @@ class WikipediaSearchViewController: ViewController { .drive(onNext: { searchResult in wireframe.open(url:searchResult.searchResult.URL) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } func configureActivityIndicatorsShow() { @@ -99,6 +99,6 @@ class WikipediaSearchViewController: ViewController { ) { $0 || $1 } .distinctUntilChanged() .drive(UIApplication.shared.rx.isNetworkActivityIndicatorVisible) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } } diff --git a/RxExample/RxExample/Examples/macOS simple example/IntroductionExampleViewController.swift b/RxExample/RxExample/Examples/macOS simple example/IntroductionExampleViewController.swift index 1070be5e3..b27f648e4 100644 --- a/RxExample/RxExample/Examples/macOS simple example/IntroductionExampleViewController.swift +++ b/RxExample/RxExample/Examples/macOS simple example/IntroductionExampleViewController.swift @@ -38,7 +38,7 @@ class IntroductionExampleViewController : ViewController { return "\(pair.a + pair.b)" } .bind(to: c.rx.text) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) // Also, tell it out loud let speech = NSSpeechSynthesizer() @@ -59,14 +59,14 @@ class IntroductionExampleViewController : ViewController { speech.startSpeaking(result) }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) slider.rx.value .subscribe(onNext: { value in self.sliderValue.stringValue = "\(Int(value))" }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) sliderValue.rx.text.orEmpty .subscribe(onNext: { value in @@ -74,7 +74,7 @@ class IntroductionExampleViewController : ViewController { self.slider.doubleValue = doubleValue self.sliderValue.stringValue = "\(Int(doubleValue))" }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) // Synchronize text in two different textviews. let textViewValue = BehaviorRelay(value: "System Truth") @@ -85,13 +85,13 @@ class IntroductionExampleViewController : ViewController { .subscribe(onNext: { value in print("Text: \(value)") }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) disposeButton.rx.tap .subscribe(onNext: { [weak self] _ in print("Unbind everything") self?.disposeBag = DisposeBag() }) - .disposed(by: disposeBag) + .disposed(by: &disposeBag) } } diff --git a/Tests/RxCocoaTests/KVOObservableTests.swift b/Tests/RxCocoaTests/KVOObservableTests.swift index 11bc87d0e..024d94621 100644 --- a/Tests/RxCocoaTests/KVOObservableTests.swift +++ b/Tests/RxCocoaTests/KVOObservableTests.swift @@ -30,7 +30,7 @@ private final class TestClass : NSObject { } final class Parent : NSObject { - var disposeBag: DisposeBag! = DisposeBag() + var disposeBag: DisposeBag = DisposeBag() @objc dynamic var val: String = "" @@ -43,7 +43,7 @@ final class Parent : NSObject { } deinit { - disposeBag = nil + disposeBag = DisposeBag() } } diff --git a/Tests/RxSwiftTests/DisposeBagTest.swift b/Tests/RxSwiftTests/DisposeBagTest.swift index 942e7b112..c33c73e29 100644 --- a/Tests/RxSwiftTests/DisposeBagTest.swift +++ b/Tests/RxSwiftTests/DisposeBagTest.swift @@ -26,14 +26,14 @@ extension DisposeBagTest { let disposable1 = TestDisposable() let disposable2 = TestDisposable() - var disposeBag: DisposeBag? = DisposeBag() + var disposeBag: DisposeBag = DisposeBag() - disposeBag?.insert(disposable1) - disposeBag?.insert(disposable2) + disposeBag.insert(disposable1) + disposeBag.insert(disposable2) XCTAssert(disposable1.count == 0) XCTAssert(disposable2.count == 0) - disposeBag = nil + disposeBag = DisposeBag() XCTAssert(disposable1.count == 1) XCTAssert(disposable2.count == 1) } @@ -46,13 +46,13 @@ extension DisposeBagTest { let disposable1 = TestDisposable() let disposable2 = TestDisposable() - var disposeBag: DisposeBag? = DisposeBag() + var disposeBag: DisposeBag = DisposeBag() - disposeBag?.insert(disposable1, disposable2) + disposeBag.insert(disposable1, disposable2) XCTAssert(disposable1.count == 0) XCTAssert(disposable2.count == 0) - disposeBag = nil + disposeBag = DisposeBag() XCTAssert(disposable1.count == 1) XCTAssert(disposable2.count == 1) } @@ -61,13 +61,13 @@ extension DisposeBagTest { let disposable1 = TestDisposable() let disposable2 = TestDisposable() - var disposeBag: DisposeBag? = DisposeBag() + var disposeBag: DisposeBag = DisposeBag() - disposeBag?.insert([disposable1, disposable2]) + disposeBag.insert([disposable1, disposable2]) XCTAssert(disposable1.count == 0) XCTAssert(disposable2.count == 0) - disposeBag = nil + disposeBag = DisposeBag() XCTAssert(disposable1.count == 1) XCTAssert(disposable2.count == 1) }