| // |
| // NSObject+RACLifting.h |
| // iOSDemo |
| // |
| // Created by Josh Abernathy on 10/13/12. |
| // Copyright (c) 2012 GitHub, Inc. All rights reserved. |
| // |
| |
| @class RACSignal; |
| |
| @interface NSObject (RACLifting) |
| |
| /// Lifts the selector on the receiver into the reactive world. The selector will |
| /// be invoked whenever any signal argument sends a value, but only after each |
| /// signal has sent an initial value. |
| /// |
| /// It will replay the most recently sent value to new subscribers. |
| /// |
| /// This does not support C arrays or unions. |
| /// |
| /// selector - The selector on self to invoke. |
| /// firstSignal - The signal corresponding to the first method argument. This |
| /// must not be nil. |
| /// ... - A list of RACSignals corresponding to the remaining arguments. |
| /// There must be a non-nil signal for each method argument. |
| /// |
| /// Examples |
| /// |
| /// [button rac_liftSelector:@selector(setTitleColor:forState:) withSignals:textColorSignal, [RACSignal return:@(UIControlStateNormal)], nil]; |
| /// |
| /// Returns a signal which sends the return value from each invocation of the |
| /// selector. If the selector returns void, it instead sends RACUnit.defaultUnit. |
| /// It completes only after all the signal arguments complete. |
| - (RACSignal *)rac_liftSelector:(SEL)selector withSignals:(RACSignal *)firstSignal, ... NS_REQUIRES_NIL_TERMINATION; |
| |
| /// Like -rac_liftSelector:withSignals:, but accepts an array instead of |
| /// a variadic list of arguments. |
| - (RACSignal *)rac_liftSelector:(SEL)selector withSignalsFromArray:(NSArray *)signals; |
| |
| @end |
| |
| @interface NSObject (RACLiftingDeprecated) |
| |
| - (RACSignal *)rac_liftSelector:(SEL)selector withObjects:(id)arg, ... __attribute__((deprecated("Use -rac_liftSelector:withSignals: instead"))); |
| - (RACSignal *)rac_liftSelector:(SEL)selector withObjectsFromArray:(NSArray *)args __attribute__((deprecated("Use -rac_liftSelector:withSignalsFromArray: instead"))); |
| - (RACSignal *)rac_liftBlock:(id)block withArguments:(id)arg, ... NS_REQUIRES_NIL_TERMINATION __attribute__((deprecated("Use +combineLatest:reduce: instead"))); |
| - (RACSignal *)rac_liftBlock:(id)block withArgumentsFromArray:(NSArray *)args __attribute__((deprecated("Use +combineLatest:reduce: instead"))); |
| |
| @end |
| |
| @interface NSObject (RACLiftingUnavailable) |
| |
| - (instancetype)rac_lift __attribute__((unavailable("Use -rac_liftSelector:withSignals: instead"))); |
| |
| @end |