All notable changes to this project will be documented in this file.
- Adds
fromoperator on "SharedSequence" - Adds
mergeoperator on "Completable" - Adds
usingoperator on "PrimitiveSequence" - Adds
concatMapoperator. - Adds
share(replay:scope:)operator. - Adds
multicast(makeSubject:)operator. - Adds
UIButton.image(for:)extension. - Adds
UIButton.backgroundImage(for:)extension. - fixes typos
- Improves reentrancy and synchronization checks.
- Issues with
share()andshareReplay(_:). #1111 .share()inconsistent in behavior. #1242- Fixes issues with
Driversometimes sending initial element async. #1253
3.4.1 (Xcode 8.3.1 / Swift 3.1 compatible)
- Adds
UINavigationControllerdelegate proxy and extensions:willShowdidShow
- Deprecates
TestScheduler.start(_:create:)in favor ofTestScheduler.start(disposed:create:). - Deprecates
TestScheduler.start(_:subscribed:disposed:create:)in favor ofTestScheduler.start(created:subscribed:disposed:create:).
- Fixes observable sequence completion in case of empty arrays for
combineLatestandzip. #1205 - Fixes array version of
mergeoperator completing immediately in case one of the observable sequences is empty. #1221 - Adds RxTest to SPM. #1215
- Adds tuple version of operator
SharedSequence.zip(collection). - Adds tuple version of operator
SharedSequence.zip. - Adds tuple version of operator
SharedSequence.combineLatest(collection). - Adds tuple version of operator
SharedSequence.combineLatest. - Adds missing
trimOutputparameter toSharedSequence.debug. - Makes
RxImagePickerDelegateProxysubclass ofRxNavigationControllerDelegateProxy.
3.4.0 (Xcode 8.3.1 / Swift 3.1 compatible)
- Xcode 8.3.1 / Swift 3.1 compatibility.
- Add subscription closures for Single, Maybe and Completable (
onSuccess,onError,onCompleted). - Rename Units as Traits and update the documentation for Single, Completable & Maybe.
- Deprecates
bindToin favor ofbind(to:). - Adds
materializeoperator - Adds
dematerializeoperator - Adds
latestparameter toSharedSequence.throttleoperator. - Adds
debugoperator toPrimitiveSequence.
- Fixes problem with
UICollectionViewdata source caching and disposal logic. #1154
3.3.1 (Xcode 8 / Swift 3.0 compatible)
- Fixes misspelled
CompleteabletoCompletable. #1134
3.3.0 (Xcode 8 / Swift 3.0 compatible)
- Adds
Single,Maybe,Completableunits inspired by RxJava (operators):createdeferredjusterrorneverdelaySubscriptiondelaydofiltermapflatMapobserveOnsubscribeOncatchErrorretryretryWhenzip
- Adds
asSingle()operator onObservableType. - Adds
asMaybe()operator onObservableType. - Adds
asCompletable()operator onObservableType. - Adds variadic
combineLatestandzipoverloads without result selector (defaults to tuple). - Adds array
combineLatestandzipoverloads with result selector (defaults to array of elements) - Adds optimized synchronous
mergeoperator to observable sequence (variadic, array, collection). #579 - Adds optimized synchronous
mergeoperator to shared sequence (variadic, array, collection). - Adds
AsyncSubjectimplementation. - Adds
XCTAssertEqualoverloads toRxTest. - Adds
countDownDurationtoUIDatePicker. - Adds
attributedTitle(for:)toUIButton. - Adds
onSubscribedtodooperator. - Adds
isUserInteractionEnabledtoUIView.
- Improves DelegateProxy
responds(to:)selector logic to only respond to used selectors. #1081, #1087 - Deprecates
from()in favor offrom(optional:)to avoid issues with implicit conversions to optional. - Fixes thread sanitizer reporting issues with
mergeoperator. #1063 - Calls
collectionViewLayout.invalidateLayout()afterreloadData()as a workaround for iOS 10 bug. - Changes
UICollectionView.rx.didUpdateFocusInContextWithAnimationCoordinatorcontext parameter type toUICollectionViewFocusUpdateContext
3.2.0 (Xcode 8 / Swift 3.0 compatible)
- Adds
groupByoperator - Adds
ifEmpty(switchTo:)operator - Adds
ifEmpty(default:)operator - Adds
Disposableextensiondisposed(by:)equivalent toaddDisposableTothat is meant to replace it in future 4.0 version. - Consolidates atomic operations on Linux and Darwin platform.
- Adds DEBUG mode concurrent asserts for
VariableandObservable.create. - Adds DEBUG mode concurrent asserts for
Sink. - Small performance optimizations for subjects.
- Adaptations for Xcode 8.3 beta.
- Adds
numberOfPagestoUIPageControl. - Adds additional resources cleanup unit tests for cases where operators are used without
DisposeBags. - Chroes:
- Adds
finalkeyword wherever applicable. - Remove unnecessary
import Foundationstatements. - Examples cleanup.
- Adds
- Improves behavior of
shareReplayWhileConnectedby making sure that events emitted after disconnect are ignored even in case of fast reconnect. - Fixes a couple of operators that were not cleaning up resources on terminal events when used without
DisposeBags. - Fixes delegate proxy interaction with subclassing of
UISearchController. - Fixes delegate proxy interaction with subclassing of
NSTextStorage. - Fixes delegate proxy interaction with subclassing of
UIWebView. - Fixes delegate proxy interaction with subclassing of
UIPickerView.
3.1.0 (Xcode 8 / Swift 3.0 compatible)
- Adds
changedproperty toControlPropertythat returnsControlEventof user generated changes.textField.text.changed.map { "User changed text to \($0)" }
- Adds optional overloads for
fromoperator.let num: Int? = 3; let sequence = Observable.from(num) - Improves
UIBindingObserverby tolerating binding from non main dispatch queue. In case binding is attempted from non main dispatch queue it will be automagically dispathed async to main queue. - Makes control property naming consistent for
UIDatePicker,UISearchBar,UISegmentedControl,UISwitch,UITextField,UITextView(valueproperty + value alias name). - Adds missing extension to
UIScrollView.didScrolldidZoomdidEndDeceleratingdidEndDraggingdidScrollToTop
- Renames
refreshingtoisRefreshing. - adds
UIWebViewextensions:didStartLoaddidFinishLoaddidFailLoad
- Adds
UITabBarControllerextensionswillBeginCustomizingwillEndCustomizingdidEndCustomizingdidSelect
- Adds
UIBarButtonItemextensionstitle
- Performance optimizations
- Improves data source behavior by clearing data source proxy when forwarding delegate is
nil.
- Fixes anomaly caused by
UITableViewinvalid state caching of previous data source even after the change. Binding of reactive data source now triggerslayoutIfNeededthat invalidates that internal cached state. - Fixes issue with race in
AnyRecursiveScheduler. #995
3.0.1 (Xcode 8 / Swift 3.0 compatible)
- Fixes RxCocoa problems on macOS (
TextInputnow usesNSTextInputClient) - Hides accidentally exposed
BagKeystructure. - Makes
notificationextensionnameparameter optional.
3.0.0 (Xcode 8 / Swift 3.0 compatible)
- Prefixes boolean properties with
isand makesString?properties consistent.rx.hidden->rx.isHiddenrx.enabled->rx.isEnabled... also ...- since
rx.texthas now typeString?to be consistent with UIKit, in caseStringis needed there isrx.text.orEmptythat hasStringtype.
- Renames
title(controlState:)onUIButtontotitle(for:). - All data structures are now internal (
Bag,Queue,PriorityQueue...) - Improves performance of
Bag. - Polishes RxCocoa
URLSessionextensionsJSON->json- return type is
Anyinstead ofAnyObject - replaces response tuple parameters, now it's
(HTTPResponse, Data) - removes name hiding for
requestparameter
- Migrates
DriverandNSNotificationtests toLinux. - Removes RxTest from OSX + SPM integration until usable XCTest support on OSX.
- Renames
ObserverType.maptoOberverType.mapObserverbecause of possible ambigutites with subjects. - Improves dispatch queue detection logic and replaces concept of threads in favor of dispatch queues (solves a lot of problems on Linux environment).
- Replaces
SectionedViewDataSourceType.model(_:)withSectionedViewDataSourceType.model(at:) - Renames
OSXtomacOSacross the project.
- Fixes wrong casing in
#import "include/_RXObjCRuntime.h"(was creating issues for people with case sensitive file system). #949 - Fixes issues with locking strategy for subjects. #936
- Fixes code example in comments of RxTableViewExtensions that didn't compile. #947
- Adds
.swift-versionto help package managers to detect Swift 3 version.
3.0.0-rc.1 (Xcode 8 / Swift 3.0 compatible)
- Renames
RxTestslibrary toRxTestbecause of problems with Swift Package Manager. - Adds Swift Package Manager support
- Adds Linux support
- Replaces
AnyObserverwithUIBindingObserverin public interface. - Renames
resourceCounttoResources.total. - Makes
rx.texttype consistent with UIKitString?type.
textField.rx.text // <- now has type `ControlProperty<String?>`
textField.rx.text.orEmpty // <- now has type `ControlProperty<String>`- Adds optional overloads for
bindToanddrive. Now the following works:
let text: Observable<String> = Observable.just("")
// Previously `map { $0 }` was needed because of mismatch betweeen sequence `String` type and `String?` type
// on binding `rx.text` observer.
text.bindTo(label.rx.text)
.disposed(by: disposeBag)
...
let text = Driver.just("")
text.drive(label.rx.text)
.disposed(by: disposeBag)- Adds trim output parameter to
debugoperator. #930 - Renames
NSDatetoDateeverywhere. - Renames scheduler init param
globalConcurrentQueueQOStoqosand removes custom enum wrapper. - Adds setter to
rxproperty to enable mutation of base object.
3.0.0-beta.2 (Xcode 8 / Swift 3.0 compatible)
-
Subscription disposables now only create strong references to sinks until being disposed or sequence terminates. #573
-
Introduces
SharedSequenceand makesDriverjust a specialization ofSharedSequence. That meansDriveris now just one specificSharedSequenceand it is now possible to easily create new concepts that have another compile time guarantees in a couple of lines of code. E.g. choosing a background scheduler on which elements are delivered, or choosingshareas a sharing strategy instead ofshareReplayLatestWhileConnected. -
Moves
Reactivestruct andReactiveCompatiblefromRxCocoatoRxSwiftto enable third party consumers to removeRxCocoadependency. -
Add
rx.extensions on Types. -
Moves
UIImagePickerViewControllerandCLLocationManagerout ofRxCocoatoRxExampleproject because of App Store submissions issues on iOS 10. -
Adds
sentMessagegot its equivalent sequencemethodInvokedthat produces elements after method is invoked (vs before method is invoked). -
Deprecates
observemethod onDelegateProxyin favor ofsentMessage. -
Adds simetric
methodInvokedmethod onDelegateProxythat enables observing after method is invoked. -
Moves all delegate extensions from using
sentMessageto usingmethodInvoked(that fixes some problem with editing data sources) -
Fixes problem with
RxTableViewDataSourceProxysource enabling editing of table view cells (swipe on delete) even if there weren't any observers orforwardToDelegatewasn't implementingUITableViewDataSource.tableView(_:commit:forRowAt:). #907 -
Makes
DelegateProxyopen. #884 -
Deprecates extensions that were polluting Swift collection namespaces and moves them to static functions on
ObservableObservable.combineLatestObservable.zipObservable.concatObservable.catchError(sequence version)Observable.amb
-
Deprecates extensions that were polluting Swift collection namespaces and moves them to static functions on
DriverDriver.combineLatestDriver.zipDriver.concatDriver.catchError(sequence version)Driver.amb
-
Update Getting Started document, section on creating an observable that performs work to Swift 3.0.
-
Removes stale installation instructions.
3.0.0-beta.1 (Xcode 8 GM compatible 8A218a)
- Adapts to new Swift 3.0 syntax.
- Corrects
throttleoperator behavior to be more consistent with other platforms. Addslatestflag that controls should latest element be emitted after dueTime. - Adds
delayoperator. - Adds
UISearchBarextensions:bookmarkButtonClickedresultsListButtonClickedtextDidBeginEditingtextDidEndEditing
- Moves
CLLocationManagerandUIImagePickerViewControllerextensions from RxCocoa to RxExample project. #874 - Adds matrix CI builds. =======
3.0.0.alpha.1 (Xcode 8 beta 6 compatible 8S201h)
- Modernizes API to be more consistent with Swift 3.0 API Design Guidelines
- Replaces
rx_*prefix withrx.*extensions. (Inspired by.lazycollections API). We've tried annotate deprecated APIs with@available(*, deprecated, renamed: "new method")but trivial replacements aren't annotated.rx_text->rx.textrx_tap->rx.taprx_date->rx.date- ...
- Deprecates
subscribeNext,subscribeError,subscribeCompletedin favor ofsubscribe(onNext:onError:onCompleted:onDisposed)(The downsides of old extensions were inconsistencies with Swift API guidelines. They also weren't expressing that calling them actually performes additional subscriptions and thus potentially additional work beside just registering observers). - Deprecates
doOnNext,doOnCompleted,doOnErrorin favor ofdo(onNext:onCompleted:onError:onSubscribe:onDisposed:) - Adds
onSubscribeandonDisposedtodooperator. - Adds namespace for immutable disposables called
Disposables- Deprecates
AnonymousDisposablein favor ofDisposables.create(with:) - Deprecates
NopDisposablein favor ofDisposables.create() - Deprecates
BinaryDisposablein favor ofDisposables.create(_:_:)
- Deprecates
- Deprecates
toObservablein favor ofObservable.from(). - Replaces old javascript automation tests with Swift UI Tests.
- ...
- There is a problem using
UISwitchextensions because it seems that a bug exists in UIKit that causes allUISwitchinstances to leak. ReactiveX#842
- Adds Swift 2.3 compatibility.
- Adds
UIViewController.rx_titleextension. - Adds
UIScrollView.rx_scrollEnabledextension. - Resolve static analysis issues relating to non-use of an assigned value, and potential null dereferences in RxCocoa's Objective-C classes.
- Changes
forwardDelegateproperty type onDelegateProxyfromassigntoweak. - Simplifies UITable/CollectionView data source generic parameters.
- Adds simple usage examples to UITable/CollectionView data source extensions.
- Documents UITable/CollectionView data source extensions memory management and adds unit tests to cover that documentation.
- Adds
.jazzy.yml - Adds
UITabBarextensions and delegate proxy wrapper- rx_didSelectItem
- rx_willBeginCustomizing
- rx_didBeginCustomizing
- rx_willEndCustomizing
- rx_didEndCustomizing
- Adds
UIPickerViewdelegate proxy and extensions:- rx_itemSelected
- Adds
UIAlertAction.rx_enabledextension. - Adds
UIButton.rx_title(controlState: UIControlState = .Normal)extension. - Adds
UIPageControl.rx_currentPageextension. - Adds
hasObserversproperty to*Subject.
- Fixes problem with UITable/CollectionView releasing of data sources when result subscription disposable wasn't retained.
- Fixes all Xcode analyzer warnings
- Exposes
installForwardDelegate. - Adds
proxyForObjectas protocol extension and deprecates global function version. - Improves
installForwardDelegateassert messaging. - Improves gesture recognizer extensions to use typed gesture recognizers in
rx_event. - Adds
RxTextInputprotocol to enable creating reactive extensions forUITextInput/NSTextInput. - Adds
rx_willDisplayCellandrx_didEndDisplayingCellextensions toUITableView. - Improves playgrounds.
- Fixes in documentation.
- Turns off Bitcode for
RxTestsCocoaPods integration. - Fixes
UITextField.rx_textandUITextView.rx_textintegrations to be more robust when used with two way binding. - Fixes two way binding example code so it now properly handles IME used in Asian cultures and adds explanations how to properly perform two way bindings. ReactiveX#649
- Removes
distinctUntilChangedfrom control extensions. ReactiveX#626
- adds
Driver.drivewithVariableparameter. - exposes
RxSearchBarDelegateProxy - adds
rx_cancelButtonClickedtoUISearchBar. - adds
rx_searchButtonClickedtoUISearchBar. - adds
UISearchControllerextensions:rx_didDismissrx_didPresentrx_presentrx_willDismissrx_willPresent
- Fixes anomaly with
multicastdisposing subscription. - Small grammar fixes in code.
- Fixes in documentation.
- Xcode 7.3 / Swift 2.2 support
- Adds
rx_badgeValuetoUITabBarItem. - Adds
rx_progresstoUIProgresView. - Adds
rx_selectedScopeButtonIndextoUISearchBar. - Adds
asyncInstancetoMainScheduler. - Makes
nameparmeter optional forrx_notificationextension. - Adds
UnitTests.md. - Adds
Tips.md. - Updates playground inline documentation with running instructions.
- Synchronizes copy of
RxDataSourcessource files inside example project to0.6release.
- Fixes anomaly with synchronization in disposable setter of
SingleAssignmentDisposable. - Improves
DelegateProxymemory management. - Fixes anomaly during two way binding of
UITextViewtext value. - Improves
singleoperator so it handles reentrancy better.
- Fixes problem with
timeroperator. Changes return type fromObservable<Int64>toObservable<T>. This could potentially cause code breakage, but it was an API anomaly. - Curried functions were marked deprecated so they were replaced in
UITableViewandUICollectionViewextensions with equivalent lambdas. This shouldn't break anyone's code, but it is a change in public interface.
This is example of those changes:
- public func rx_itemsWithCellFactory<S : Sequence, O : ObservableType where O.E == S>
(source: O)
(cellFactory: (UITableView, Int, S.Iterator.Element) -> UITableViewCell) -> Disposable
+ public func rx_itemsWithCellFactory<S : Sequence, O : ObservableType where O.E == S>
(source: O)
-> (cellFactory: (UITableView, Int, S.Iterator.Element) -> UITableViewCell) -> Disposable- Fixes anomaly in
CLLocationManagerextensions
- public var rx_didFinishDeferredUpdatesWithError: RxSwift.Observable<NSError> { get }
+ public var rx_didFinishDeferredUpdatesWithError: RxSwift.Observable<NSError?> { get }- Adds
UIBindingObserver. - Adds
doOnNextconvenience operator (also added toDriver). - Adds
doOnErrorconvenience operator. - Adds
doOnCompletedconvenience operator (also added toDriver). - Adds
skip,startWithtoDriver. - Adds
rx_activeextension toNSLayoutConstraint. - Adds
rx_refreshingextension toUIRefreshControl. - Adds
intervalandtimertoDriver. - Adds
rx_itemAccessoryButtonTappedtoUITableViewextensions. - Adds
rx_networkActivityIndicatorVisibletoUIApplication. - Adds
rx_selectedtoUIControl.
- Fixes anomaly with registering multiple observers to
UIBarButtonItem. - Fixes anomaly with blocking operators possibly over-stopping the
RunLoop.
- Adds
UIImagePickerControllerdelegate wrappers. - Adds
SectionedViewDataSourceTypethat enables third party data sources to use existingrx_modelSelected/rx_modelDeselectedwrappers. - Adds
rx_modelDeselectedtoUITableView - Adds
rx_itemDeselectedtoUITableView - Adds
rx_modelDeselectedtoUICollectionView - Adds
rx_itemDeselectedtoUICollectionView - Adds
rx_statetoNSButton - Adds
rx_enabledtoNSControl - Adds
UIImagePickerControllerusage example to Example app.
- Removes usage of
OSSpinLocks from allDarwinplatforms because of problems with inversion of priority on iOS. Original thread on swift mailing list is here - Reduces verbose output from
RxCocoaproject in debug mode.TRACE_RESOURCESis now also treated as a verbosity level setting. It is possible to get old output by usingTRACE_RESOURCESwith verbosity level>= 2. #397 - Fixes anomaly with logging of HTTP body of requests in
RxCocoaproject.
- Changes package names to
io.rx.[library] - Packages data sources from
RxDataSourceStarterKitinto it's own repository RxDataSources underRxSwiftCommunity. - Removes deprecated APIs.
- Replaces hacky code that solved anomaly caused by interaction between autocorrect and text controls notification mechanism with proper solution. #333
- Adds generic
public func rx_sentMessage(selector: Selector) -> Observable<[AnyObject]>that enables observing of messages sent to any object. (This is enabled if DISABLE_SWIZZLING isn't set).- use cases like
cell.rx_sentMessage("prepareForReuse")are now supported.
- use cases like
- Linux support (proof of concept, but single threaded mode works)
- more info in Documentation/Linux.md
- Initial support for
Swift Package Manager- works on
Linux(RxSwift,RxBlocking,RxTests) - doesn't work on OSX because it can't compile
RxCocoaandRxTests(because of inclusion ofXCTestextensions), but OSX has two other package managers and manual method. - Project content is linked to
Sourcesautomagically using custom tool - more info in Documentation/Linux.md
- works on
- Adds
VirtualTimeSchedulertoRxSwift - Adds
HistoricalSchedulertoRxSwift - Improves performance of virtual schedulers using priority queue.
- Adds new
RxTestslibrary to enable testing of custom Rx operators. This library contains everything needed to write unit tests in the following way:
func testMap() {
let scheduler = TestScheduler(initialClock: 0)
let xs = scheduler.createHotObservable([
next(150, 1),
next(210, 0),
next(220, 1),
next(230, 2),
next(240, 4),
completed(300)
])
let res = scheduler.start { xs.map { $0 * 2 } }
let correctEvents = [
next(210, 0 * 2),
next(220, 1 * 2),
next(230, 2 * 2),
next(240, 4 * 2),
completed(300)
]
let correctSubscriptions = [
Subscription(200, 300)
]
XCTAssertEqual(res.events, correctEvents)
XCTAssertEqual(xs.subscriptions, correctSubscriptions)
}- Adds test project for
RxExample-iOSthat demonstrates how to easily write marble tests usingRxTestsproject.
let (
usernameEvents,
passwordEvents,
repeatedPasswordEvents,
loginTapEvents,
expectedValidatedUsernameEvents,
expectedSignupEnabledEvents
) = (
scheduler.parseEventsAndTimes("e---u1----u2-----u3-----------------", values: stringValues).first!,
scheduler.parseEventsAndTimes("e----------------------p1-----------", values: stringValues).first!,
scheduler.parseEventsAndTimes("e---------------------------p2---p1-", values: stringValues).first!,
scheduler.parseEventsAndTimes("------------------------------------", values: events).first!,
scheduler.parseEventsAndTimes("e---v--f--v--f---v--o----------------", values: validations).first!,
scheduler.parseEventsAndTimes("f--------------------------------t---", values: booleans).first!
)- Adds example app for GitHub signup example that shows the same example written with and without
Driver. - Documents idea behind units and
DriverinUnits.md. - Example of table view with editing is polished to use more functional approach.
- Adds
deferredtoDriverunit. - Removes implicitly unwrapped optionals from
CLLocationManagerextensions. - Removes implicitly unwrapped optionals from
NSURLSessionextensions. - Polishes the
debugoperator format. - Adds optional
cellTypeparameter to Table/Collection viewrx_itemsWithCellIdentifiermethod. - Polish for calculator example in
RxExampleapp. - Documents and adds unit tests for tail recursive optimizations of
concatoperator. - Moves
Eventequality operator toRxTestsproject. - Adds
seealsoreferences toreactivex.io. - Polishes headers in source files and adds tests to enforce standard header format.
- Adds
driveOnSchedulerto enable scheduler mocking forDriverduring unit tests. - Adds assertions to
drive*family of functions that makes sure they are always called from main thread. - Refactoring and polishing of internal ObjC runtime interception architecture.
-
Changes
ConnectableObservable, generic argument is now type of elements in observable sequence and not type of underlying subject. (BREAKING CHANGE) -
Removes
RxBoxandRxMutablebox from public interface. (BREAKING CHANGE) -
SchedulerTypenow isn't parametrized onTimeandTimeInterval. -
Deprecates
VariableimplementingObservableTypein favor ofasObservable().- Now variable also sends
.Completedto observable sequence returned fromasObservablewhen deallocated. If you were (mis)using variable to return single value... you can just useVariable(1).map { x in ... }justoperatorObservable.just(1).map { x in ... }
- Now variable also sends
-
Deprecates free functions in favor of
Observablefactory methods, and deprecates versions of operators with hidden external parameters (scheduler, count) in favor of ones with explicit parameter names. E.g.Observable.just(1)instead ofjust(1)Observable.empty()instead ofempty()Observable.error()instead offailWith()Observable.of(1, 2, 3)instead ofsequenceOf(1, 2, 3).debounce(0.2, scheduler: MainScheduler.sharedInstance)instead of.debounce(0.2, MainScheduler.sharedInstance)Observable.range(start:0, count: 10)instead ofrange(0, 10)Observable.generate(initialState: 0, condition: { $0 < 10 }) { $0 + 1 }instead ofgenerate(0, condition: { $0 < 10 }) { $0 + 1 }Observable<Int>.interval(1, scheduler: MainScheduler.sharedInstance)instead ofinterval(1, MainScheduler.sharedInstance)...
If you want to continue using free functions form, you can define your free function aliases for
Observablefactory methods (basically copy deprecated methods). -
Deprecates
UIAlertViewextensions.- These extensions could be stored locally if needed.
-
Deprecates
UIActionSheetextensions.- These extensions could be stored locally if needed.
-
Deprecates
rx_controlEventsin favor ofrx_controlEvent. -
Deprecates
MainScheduler.sharedInstancein favor ofMainScheduler.instance -
Deprecates
ConcurrentMainScheduler.sharedInstancein favor ofConcurrentMainScheduler.instance -
Deprecates factory methods from
Drivein favor ofDriverfactory methods. -
Deprecates
sampleLatestin favor ofwithLatestFrom. -
Deprecates
ScopedDisposableandscopedDispose()in favor ofDisposeBag.
- Improves and documents resource leak code in
RxExample. - Replaces
unownedreference withweakreferences inRxCocoaproject. - Fixes
debugoperator not using__FILE__and__LINE__properly. - Fixes anomaly with
timeoutoperator. - Fixes problem with spell-checker and
UIText*losing focus.
- Adds
ignoreElementsoperator. - Adds
timeoutoperator (2 overloads). - Adds
shareReplayLatestWhileConnectedoperator. - Changes
Driverto internally useshareReplayLatestWhileConnectedfor subscription sharing instead ofshareReplay(1). - Adds
flatMapFirsttoDriverunit. - Adds
replayAlloperator. - Adds
createUnboundedfactory method toReplaySubject. - Adds optional type hints to
empty,failWithandnever(empty(Int)now works and means empty observable sequence ofInts). - Adds
rx_hiddentoUIView. - Adds
rx_alphatoUIView. - Adds
rx_attributedTexttoUILabel. - Adds
rx_animatingtoUIActivityIndicatorView. - Adds
rx_constanttoNSLayoutConstraint. - Removes implicitly unwrapped optional from
NSURLSession.rx_response. - Exposes
rx_createDataSourceProxy,rx_createDelegateProxyonUITableView/UICollectionView. - Exposes
rx_createDelegateProxyonUITextView. - Exposes
rx_createDelegateProxyonUIScrollView. - Exposes
RxCollectionViewDataSourceProxy. - Exposes
RxCollectionViewDelegateProxy. - Exposes
RxScrollViewDelegateProxy. - Exposes
RxTableViewDataSourceProxy. - Exposes
RxTableViewDelegateProxy. - Deprecates
proxyForObjectin favor ofproxyForObject<P : DelegateProxyType>(type: P.Type, _ object: AnyObject) -> P. - Deprecates
rx_modelSelected<T>()in favor ofrx_modelSelected<T>(modelType: T.Type). - Adds
func bindTo(variable: Variable<E>) -> Disposableextension toObservableType. - Exposes
ControlEventinit. - Exposes
ControlPropertyinit. - Refactoring of example app
- Divides examples into sections
- Adds really simple examples of how to do simple calculated bindings with vanilla Rx.
- Adds really simple examples of table view extensions (sectioned and non sectioned version).
- Refactoring of
GitHub sign in exampleto use MVVM paradigm.
- Fixes documentation for
flatMapFirst - Fixes problem with delegate proxies not detecting all delegate methods in delegate proxy hierarchy.
- Improves KVO mechanism.
- Type of observed object is now first argument
view.rx_observe(CGRect.self, "frame") - Support for observing ObjC bridged enums and
RawRepresentableprotocol - Support for easier extending of KVO using
KVORepresentableprotocol - Deprecates KVO extensions that don't accept type as first argument in favor of ones that do.
- Type of observed object is now first argument
- Adds
flatMapLatest(also added toDriverunit). - Adds
flatMapFirstoperator (also added toDriverunit). - Adds
retryWhenoperator. - Adds
windowoperator. - Adds
singleoperator. - Adds
single(blocking version) operator. - Adds
rx_primaryActiononUIButtonfortvOS. - Transforms error types in
RxSwift/RxCocoaprojects fromNSErrors to Swift enum types.RxErrorRxCocoaErrorRxCocoaURLError- ...
NSURLSessionextensions now returnObservable<(NSData!, NSHTTPURLResponse)>instead ofObservable<(NSData!, NSURLResponse!)>.- Optimizes consecutive map operators. For example
map(validate1).map(validate2).map(parse)is now internally optimized to onemapoperator. - Adds overloads for
just,sequenceOf,toObservablethat accept scheduler. - Deprecates
asObservableextension ofSequencein favor oftoObservable. - Adds
toObservableextension toArray. - Improves table view animated data source example.
- Polishing of
RxDataSourceStarterKitdifferentiateForSectionedViewoperatorrx_itemsAnimatedWithDataSourceextension
- Makes blocking operators run current thread's runloop while blocking and thus disabling deadlocks.
- Fixes example with
Variablein playgrounds so it less confusing regarding memory management. - Fixes
UIImageViewextensions to useUIImage?instead ofUIImage!. - Fixes improper usage of
CustomStringConvertibleand replaces it withCustomDebugStringConvertible.
- Optimizations. System now performs significantly fewer allocations and is several times faster then 2.0.0-beta.1
- Makes
AnonymousObservableprivate in favor ofcreatemethod. - Adds
toArrayoperator (non blocking version). - Adds
withLatestFromoperator, and also extendsDriverwith that operation. - Adds
elementAtoperator (non blocking version). - Adds
takeLastoperator. - Improves
RxExampleapp. Adds retries example when network becomes available again. - Adds composite extensions to
Bag(on,disposeAllIn). - Renames mistyped extension on
ObserverTypefromonCompletetoonCompleted.
- Fixes minimal platform version in OSX version of library to 10.9
- Adds
Driverunit. This unit uses Swift compiler to prove certain properties about observable sequences. Specifically- that fallback error handling is put in place
- results are observed on main thread
- work is performed only when there is a need (at least one subscriber)
- computation results are shared between different observers (replay latest element)
- Renames
ObserverOftoAnyObserver. - Adds new interface
ObservableConvertibleType. - Adds
BlockingObservabletoRxBlockingand makes it more consistent withRxJava. - Renames
func subscribe(next:error:completed:disposed:)tofunc subscribe(onNext:onError:onCompleted:onDisposed:) - Adds concat convenience method
public func concat<O : ObservableConvertibleType where O.E == E>(second: O) -> RxSwift.Observable<Self.E> - Adds
skipUntiloperator. - Adds
takeWhileoperator. - Renames
takeWhileindexed version totakeWhileWithIndex - Adds
skipWhileoperator. - Adds
skipWhileWithIndexoperator. - Adds
usingoperator. - Renames
func doOn(next:error:completed:)tofunc doOn(onNext:onError:onCompleted:). - Makes
RecursiveImmediateSchedulerOfprivate. - Makes
RecursiveSchedulerOfprivate. - Adds
ConcurrentMainScheduler. - Adds overflow error so now in case of overflow, operators will return
RxErrorCode.Overflow. - Adds
rx_modelAtIndexPathtoUITableViewandUICollectionView. - Adds
var rx_didUpdateFocusInContextWithAnimationCoordinator: ControlEvent<(context:animationCoordinator:)>toUITableViewandUICollectionView - Makes
resultSelectorargument incombineLatestexplicitfunc combineLatest<O1, O2, R>(source1: O1, _ source2: O2, resultSelector: (O1.E, O2.E) throws -> R) -> RxSwift.Observable<R>. - Makes
resultSelectorargument inzipexplicitfunc combineLatest<O1, O2, R>(source1: O1, _ source2: O2, resultSelector: (O1.E, O2.E) throws -> R) -> RxSwift.Observable<R>. - Adds activity indicator example in
RxExampleapp. - Adds two way binding example in
RxExampleapp. - many other small features
- Problem with xcodebuild 7.0.1 treating tvOS shared schemes as osx schemes.
- Adds
tvOSsupport - Adds
watchOSsupport - Adds auto loading example to example app
- Restores old
Variablebehavior. Variable doesn't send anything on dealloc. - Adds performance tests target.
- Adds more detailed resource tracing during unit tests (important for further optimizations).
- Adds
UIStepperextensions. - Adds
UIBarButtonItemenabled property wrapper. - Adds response data to userInfo of error for
rx_responseextensions ofNSURLSession. - Adds
onNext,onErrorandonCompletedconvenience methods toObserverType.
- Fixes problem on some systems with unregistering
CurrentThreadSchedulerfrom current thread. - Fixes retry parameter naming (
maxAttemptCount). - Fixes a lot of unit test warnings.
- Removes embedding of Swift library with built frameworks.
- Renames
ImmediateSchedulerprotocol toImmediateSchedulerType - Renames
Schedulerprotocol toSchedulerType - Adds
CurrentThreadScheduler - Adds
generateoperator - Cleanup of dead observer code.
- Removes
SpinLocks in disposables in favor of more performantOSAtomicCompareAndSwap32. - Adds
bufferoperator (version with time and count). - Adds
rangeoperator. - Adds
repeatoperator.
- Renames
ScopedDisposetoScopedDisposable - Deprecates
observeSingleOnin favor ofobserveOn - Adds inline documentation
- Renames
fromtoasObservableextension method onSequence - Renames
catchErrorResumeNextin favor ofcatchErrorJustReturn - Deprecates
catchErrorToResult, the preferred way is to use Swiftdo/try/catchmechanism. - Deprecates
RxResult, the preferred way is to use Swiftdo/try/catchmechanism. - Deprecates
sendNextonVariablein favor of just usingvaluesetter. - Renames
rx_searchTexttorx_textonUISearchBar+Rx. - Changes parameter type for
rx_imageAnimatedto be transitionType (kCATransitionFade, kCATransitionMoveIn, ...).
- Problem in RxExample with missing
observeOnfor images.
- Removes deprecated APIs
- Adds
ObservableType - Moved from using
>-operator to protocol extensions - Change from
disposeBag.addDisposabletodisposable.addDisposableTo - Changes in RxCocoa extensions to enable fluent style
- Rename of
do*todoOn* - Deprecates
returnElementin favor ofjust - Deprecates
aggregatein favor ofreduce - Deprecates
variablein favor ofshareReplay(1)(to be consistent with RxJS version) - Method
nextonVariablein favor ofsendNext
- Adds Calculator example app
- Performance improvements for Queue
- Crash in
rx_didChangeAuthorizationStatus. #89