ReactiveCocoa/ReactiveCocoa — pull request #590 by jspahrsummers (2013-06-16 00:14:34+00:00)
Title: -rac_signalForSelector: the third

Based on @kastiglione's work in #573, this adds the following major changes:

* Existing methods are now invoked _before_ the arguments are forwarded to the signal. This follows the pattern of many methods that invoke `super` before doing anything else, making `-rac_signalForSelector:` appropriate for `-viewWillAppear:` and friends.
* Existing implementations of `-forwardInvocation:` aren't clobbered anymore. The previous `-forwardInvocation:` implementation will be invoked only if there's no associated signal or aliased implementation for the forwarded method.
* Our implementation of `-forwardInvocation:` no longer requires expensive synchronization.
* Superclass implementations of the targeted selector will no longer be modified.

**To do:**

- [ ] Test use on multiple classes in the same hierarchy
- [ ] Test listening for existing method that has at least one non-object argument
- [ ] Test listening for an existing method that has a return value
- [ ] Test use on two instances simultaneously
- [ ] Test use on `NSObject`
- [ ] Test that `completed` is sent on deallocation
- [ ] Test a zero-argument method
- [ ] Test use on a class that already implements `-forwardInvocation:`