ReactiveCocoa/ReactiveCocoa — pull request #1308 by jspahrsummers (2014-05-07 21:01:47+00:00)
Title: [RFC] Make subscribers more powerful, remove RACSubject and -subscribeNext:error:completed:

**:warning: NOT READY TO MERGE :warning:**

This may be a rough one—bear with me here. You can see some example usage in https://gist.github.com/jspahrsummers/f6424839cdeb505e31ee.

This pull request:

* Removes `-subscribeNext:error:completed:` and all variants
* Renames `-subscribe:` to `-connect:` to better indicate that it may have side effects, to fix https://github.com/ReactiveCocoa/ReactiveCocoa/issues/607#issuecomment-41855519
* Adds a `RACSubscriber` class with queue/drain semantics, to fix https://github.com/ReactiveCocoa/ReactiveCocoa/issues/1012
* Binds the new `RACSubscriber` class to a scheduler, to reduce confusion like https://github.com/ReactiveCocoa/ReactiveCocoa/issues/1049
* Replaces `RACSubject` with the ability to add multiple event handlers to the `RACSubscriber` class, and pull out a signal of all events it receives (replicating multicasting)

One of my main goals was to really make it clear that _signals are not operations_—they're not started, stopped, or cancelled. Instead, you create a specific _thing_ (a `RACSubscriber` here), which you then attach to begin work, and can detach at any point to cancel.

This also makes the distinction between inputs and outputs way clearer. Subjects were fairly confusing because they conflated those responsibilities.

/cc @andymatuschak @jonsterling @Strilanc @paulcbetts