You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.0 KiB

2 years ago
[![CircleCI](https://circleci.com/gh/RxSwiftCommunity/NSObject-Rx/tree/master.svg?style=svg)](https://circleci.com/gh/RxSwiftCommunity/NSObject-Rx/tree/master)
NSObject+Rx
===========
If you're using [RxSwift](https://github.com/ReactiveX/RxSwift), you've probably encountered the following code more than a few times.
```swift
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.](assets/screenshot.png)](https://github.com/search?q=let+disposeBag+%3D+DisposeBag%28%29&type=Code&utf8=✓)
Instead of adding a new property to every object, use this library to add it for you, to any subclass of `NSObject`.
```swift
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`:
```ruby
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.](http://i.imgur.com/mONiWzj.gif)