NSObject-Rx

by RxSwiftCommunity

RxSwiftCommunity /NSObject-Rx

Handy RxSwift extensions on NSObject, including rx.disposeBag.

497 Stars 46 Forks Last release: 5 months ago (5.1.1) MIT License 218 Commits 24 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

CircleCI

NSObject+Rx

If you're using RxSwift, you've probably encountered the following code more than a few times.

class MyObject: Whatever {
    let disposeBag = DisposeBag()

...

}

You're actually not the only one; it has been typed many, many times.

Search screenshot showing many, many results.

Instead of adding a new property to every object, use this library to add it for you, to any subclass of

NSObject
.
thing
  .bind(to: otherThing)
  .disposed(by: rx.disposeBag)

Sweet.

It'll work just like a property: when the instance is deinit'd, the

DisposeBag
gets disposed. It's also a read/write property, so you can use your own, too.

If you want to add a DisposeBag to an Object that does not inherit from NSObject, you can also implement the protocol

HasDisposeBag
, and you're good to go. This protocol provides a default DisposeBag called
disposeBag
.

Installing

CocoaPods

Add to your

Podfile
:
pod 'NSObject+Rx'

And that'll be ๐Ÿ‘Œ

Carthage

Add to

Cartfile
:
github "RxSwiftCommunity/NSObject-Rx"
Add frameworks to your project (no need to "copy items if needed")

Run

carthage update
or
carthage update --platform ios
if you target iOS only

Add run script build phase

/usr/local/bin/carthage copy-frameworks
with input files being:
$(SRCROOT)/Carthage/Build/iOS/RxSwift.framework
$(SRCROOT)/Carthage/Build/iOS/NSObject_Rx.framework

And rule โœŒ๏ธ

Contributing

Source files are in the root directory. We use CocoaPods to develop, check out the unit tests in the Demo project.

License

MIT obvs.

Tim Cook dancing to the sound of a permissive license.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.