RACSignal Class Reference
| Inherits from | RACStream : NSObject |
| Declared in | RACSignal.h RACSignal.m |
Overview
Additional methods to assist with debugging. Additional methods to assist with unit testing.
These methods should never ship in production code. The error code used when a value passed into switch:cases:default: does not match any of the cases, and no default was given.
Tasks
Other Methods
-
+ createSignal: -
+ error: -
+ never -
+ startEagerlyWithScheduler:block: -
+ startLazilyWithScheduler:block:
RACStream Methods
Debugging Methods
Testing Methods
Operations Methods
-
– doNext: -
– doError: -
– doCompleted: -
– throttle: -
– throttle:valuesPassingTest: -
– delay: -
– repeat -
– initially: -
– finally: -
– bufferWithTime:onScheduler: -
– collect -
– takeLast: -
– combineLatestWith: -
+ combineLatest: -
+ combineLatest:reduce: -
+ merge: -
– flatten: -
– then: -
– concat -
– aggregateWithStart:reduce: -
– aggregateWithStartFactory:reduce: -
– setKeyPath:onObject: -
– setKeyPath:onObject:nilValue: -
+ interval:onScheduler: -
+ interval:onScheduler:withLeeway: -
– takeUntil: -
– takeUntilReplacement: -
– catch: -
– catchTo: -
– try: -
– tryMap: -
– first -
– firstOrDefault: -
– firstOrDefault:success:error: -
– waitUntilCompleted: -
+ defer: -
– switchToLatest -
+ switch:cases:default: -
+ if:then:else: -
– toArray -
sequenceproperty -
– publish -
– multicast: -
– replay -
– replayLast -
– replayLazily -
– timeout:onScheduler: -
– deliverOn: -
– subscribeOn: -
– groupBy:transform: -
– groupBy: -
– any -
– any: -
– all: -
– retry: -
– retry -
– sample: -
– ignoreValues -
– materialize -
– dematerialize -
– not -
– and -
– or
Subscription Methods
Properties
sequence
Add every next to a sequence. Nils are represented by NSNulls.
@property (nonatomic, strong, readonly) RACSequence *sequenceDiscussion
This corresponds to the ToEnumerable method in Rx.
Returns a sequence which provides values from the signal as they’re sent. Trying to retrieve a value from the sequence which has not yet been sent will block.
Declared In
RACSignal+Operations.hClass Methods
combineLatest:
Combines the latest values from the given signals into RACTuples, once all
the signals have sent at least one next.
+ (RACSignal *)combineLatest:(id<NSFastEnumeration>)signalsDiscussion
Any additional nexts will result in a new RACTuple with the latest values
from all signals.
signals - The signals to combine. If this collection is empty, the returned signal will immediately complete upon subscription.
Returns a signal which sends RACTuples of the combined values, forwards any
error events, and completes when all input signals complete.
Declared In
RACSignal+Operations.hcombineLatest:reduce:
Combines signals using combineLatest:, then reduces the resulting tuples into a single value using -reduceEach:.
+ (RACSignal *)combineLatest:(id<NSFastEnumeration>)signals reduce:(id ( ^ ) ( ))reduceBlockDiscussion
signals - The signals to combine. If this collection is empty, the returned signal will immediately complete upon subscription. reduceBlock - The block which reduces the latest values from all the signals into one value. It must take as many arguments as the number of signals given. Each argument will be an object argument. The return value must be an object. This argument must not be nil.
Example:
[RACSignal combineLatest:@[ stringSignal, intSignal ] reduce:^(NSString string, NSNumber number) { return [NSString stringWithFormat:@“%@: %@”, string, number]; }];
Returns a signal which sends the results from each invocation of
reduceBlock.
Declared In
RACSignal+Operations.hcreateSignal:
+ (RACSignal *)createSignal:(RACDisposable *( ^ ) ( id<RACSubscriber> subscriber ))didSubscribeDiscussion
Events can be sent to new subscribers immediately in the didSubscribe
block, but the subscriber will not be able to dispose of the signal until
a RACDisposable is returned from didSubscribe. In the case of infinite
signals, this won’t ever happen if events are sent immediately.
To ensure that the signal is disposable, events can be scheduled on the
[RACScheduler currentScheduler] (so that they’re deferred, not sent
immediately), or they can be sent in the background. The RACDisposable
returned by the didSubscribe block should cancel any such scheduling or
asynchronous work.
didSubscribe - Called when the signal is subscribed to. The new subscriber is
passed in. You can then manually control the RACSubscriber by
sending it -sendNext:, -sendError:, and -sendCompleted,
as defined by the operation you’re implementing. This block
should return a RACDisposable which cancels any ongoing work
triggered by the subscription, and cleans up any resources or
disposables created as part of it. When the disposable is
disposed of, the signal must not send any more events to the
subscriber. If no cleanup is necessary, return nil.
Note: The didSubscribe block is called every time a new subscriber
subscribes. Any side effects within the block will thus execute once for each
subscription, not necessarily on one thread, and possibly even
simultaneously!
Declared In
RACSignal.hdefer:
Defer creation of a signal until the signal’s actually subscribed to.
+ (RACSignal *)defer:(RACSignal *( ^ ) ( void ))blockDiscussion
This can be used to effectively turn a hot signal into a cold signal.
Declared In
RACSignal+Operations.herror:
Returns a signal that immediately sends the given error.
+ (RACSignal *)error:(NSError *)errorDeclared In
RACSignal.hif:then:else:
Switches between trueSignal and falseSignal based on the latest value
sent by boolSignal.
+ (RACSignal *)if:(RACSignal *)boolSignal then:(RACSignal *)trueSignal else:(RACSignal *)falseSignalDiscussion
boolSignal - A signal of BOOLs determining whether trueSignal or
falseSignal should be active. This argument must not be nil.
trueSignal - The signal to pass through after boolSignal has sent YES.
This argument must not be nil.
falseSignal - The signal to pass through after boolSignal has sent NO. This
argument must not be nil.
Returns a signal which passes through nexts and errors from trueSignal
and/or falseSignal, and sends completed when both boolSignal and the
last switched signal complete.
Declared In
RACSignal+Operations.hinterval:onScheduler:
Sends NSDate.date every interval seconds.
+ (RACSignal *)interval:(NSTimeInterval)interval onScheduler:(RACScheduler *)schedulerDiscussion
interval - The time interval in seconds at which the current time is sent. scheduler - The scheduler upon which the current NSDate should be sent. This must not be nil or [RACScheduler immediateScheduler].
Returns a signal that sends the current date/time every interval on
scheduler.
Declared In
RACSignal+Operations.hinterval:onScheduler:withLeeway:
Sends NSDate.date at intervals of at least interval seconds, up to
approximately interval + leeway seconds.
+ (RACSignal *)interval:(NSTimeInterval)interval onScheduler:(RACScheduler *)scheduler withLeeway:(NSTimeInterval)leewayDiscussion
The created signal will defer sending each next for at least interval
seconds, and for an additional amount of time up to leeway seconds in the
interest of performance or power consumption. Note that some additional
latency is to be expected, even when specifying a leeway of 0.
interval - The base interval between nexts.
scheduler - The scheduler upon which the current NSDate should be sent. This
must not be nil or [RACScheduler immediateScheduler].
leeway - The maximum amount of additional time the next can be deferred.
Returns a signal that sends the current date/time at intervals of at least
interval seconds up to approximately interval + leeway seconds on
scheduler.
Declared In
RACSignal+Operations.hmerge:
Sends the latest next from any of the signals.
+ (RACSignal *)merge:(id<NSFastEnumeration>)signalsDiscussion
Returns a signal that passes through values from each of the given signals,
and sends completed when all of them complete. If any signal sends an error,
the returned signal sends error immediately.
Declared In
RACSignal+Operations.hreturn:
Returns a signal that immediately sends the given value and then completes.
+ (RACSignal *)return:(id)valueDeclared In
RACSignal.hstartEagerlyWithScheduler:block:
Immediately schedules the given block on the given scheduler. The block is given a subscriber to which it can send events.
+ (RACSignal *)startEagerlyWithScheduler:(RACScheduler *)scheduler block:(void ( ^ ) ( id<RACSubscriber> subscriber ))blockDiscussion
scheduler - The scheduler on which block will be scheduled and results
delivered. Cannot be nil.
block - The block to invoke. Cannot be NULL.
Returns a signal which will send all events sent on the subscriber given to
block. All events will be sent on scheduler and it will replay any missed
events to new subscribers.
Declared In
RACSignal.hstartLazilyWithScheduler:block:
Invokes the given block only on the first subscription. The block is given a subscriber to which it can send events.
+ (RACSignal *)startLazilyWithScheduler:(RACScheduler *)scheduler block:(void ( ^ ) ( id<RACSubscriber> subscriber ))blockDiscussion
Note that disposing of the subscription to the returned signal will not
dispose of the underlying subscription. If you need that behavior, see
[RACMulticastConnection autoconnect]. The underlying subscription will never
be disposed of. Because of this, block should never return an infinite
signal since there would be no way of ending it.
scheduler - The scheduler on which the block should be scheduled. Note that if given [RACScheduler immediateScheduler], the block will be invoked synchronously on the first subscription. Cannot be nil. block - The block to invoke on the first subscription. Cannot be NULL.
Returns a signal which will pass through the events sent to the subscriber
given to block and replay any missed events to new subscribers.
Declared In
RACSignal.hswitch:cases:default:
Switches between the signals in cases as well as defaultSignal based on
the latest value sent by signal.
+ (RACSignal *)switch:(RACSignal *)signal cases:(NSDictionary *)cases default:(RACSignal *)defaultSignalDiscussion
signal - A signal of objects used as keys in the cases dictionary.
This argument must not be nil.
cases - A dictionary that has signals as values. This argument must
not be nil. A RACTupleNil key in this dictionary will match
nil next events that are received on signal.
defaultSignal - The signal to pass through after signal sends a value for
which cases does not contain a signal. If nil, any
unmatched values will result in
a RACSignalErrorNoMatchingCase error.
Returns a signal which passes through nexts and errors from one of the
the signals in cases or defaultSignal, and sends completed when both
signal and the last used signal complete. If no defaultSignal is given,
an unmatched next will result in an error on the returned signal.
Declared In
RACSignal+Operations.hInstance Methods
aggregateWithStart:reduce:
Aggregate nexts with the given start and combination.
- (RACSignal *)aggregateWithStart:(id)start reduce:(id ( ^ ) ( id running , id next ))reduceBlockDeclared In
RACSignal+Operations.haggregateWithStartFactory:reduce:
Aggregate nexts with the given start and combination. The start factory
block is called to get a new start object for each subscription.
- (RACSignal *)aggregateWithStartFactory:(id ( ^ ) ( void ))startFactory reduce:(id ( ^ ) ( id running , id next ))reduceBlockDeclared In
RACSignal+Operations.hall:
Sends an [NSNumber numberWithBool:YES] if all the objects the receiving
signal sends pass predicateBlock.
- (RACSignal *)all:(BOOL ( ^ ) ( id object ))predicateBlockDiscussion
predicateBlock - cannot be nil.
Declared In
RACSignal+Operations.hand
Performs a boolean AND on all of the RACTuple of NSNumbers in sent by the receiver.
- (RACSignal *)andDiscussion
Asserts if the receiver sends anything other than a RACTuple of one or more NSNumbers.
Returns a signal that applies AND to each NSNumber in the tuple.
Declared In
RACSignal+Operations.hany
Sends an [NSNumber numberWithBool:YES] if the receiving signal sends any objects.
- (RACSignal *)anyDeclared In
RACSignal+Operations.hany:
Sends an [NSNumber numberWithBool:YES] if the receiving signal sends any
objects that pass predicateBlock.
- (RACSignal *)any:(BOOL ( ^ ) ( id object ))predicateBlockDiscussion
predicateBlock - cannot be nil.
Declared In
RACSignal+Operations.hasynchronousFirstOrDefault:success:error:
- (id)asynchronousFirstOrDefault:(id)defaultValue success:(BOOL *)success error:(NSError **)errorDiscussion
Because this method executes the run loop recursively, it should only be used on the main thread, and only from a unit test.
defaultValue - Returned if the receiver completes or errors before sending
a next, or if the method times out. This argument may be
nil.
success - If not NULL, set to whether the receiver completed
successfully.
error - If not NULL, set to any error that occurred.
Returns the first value received, or defaultValue if no value is received
before the signal finishes or the method times out.
Declared In
RACSignal.hasynchronouslyWaitUntilCompleted:
- (BOOL)asynchronouslyWaitUntilCompleted:(NSError **)errorDiscussion
Because this method executes the run loop recursively, it should only be used on the main thread, and only from a unit test.
error - If not NULL, set to any error that occurs.
Returns whether the signal completed successfully before timing out. If NO,
error will be set to any error that occurred.
Declared In
RACSignal.hbind:
Lazily binds a block to the values in the receiver.
- (RACSignal *)bind:(RACStreamBindBlock ( ^ ) ( void ))blockDiscussion
This should only be used if you need to terminate the bind early, or close over some state. flattenMap: is more appropriate for all other cases.
block - A block returning a RACStreamBindBlock. This block will be invoked each time the bound stream is re-evaluated. This block must not be nil or return nil.
Returns a new stream which represents the combined result of all lazy
applications of block.
Declared In
RACStream.hbufferWithTime:onScheduler:
Divides the receiver’s nexts into buffers which deliver every interval
seconds.
- (RACSignal *)bufferWithTime:(NSTimeInterval)interval onScheduler:(RACScheduler *)schedulerDiscussion
interval - The interval in which values are grouped into one buffer. scheduler - The scheduler upon which the returned signal will deliver its values. This must not be nil or [RACScheduler immediateScheduler].
Returns a signal which sends RACTuples of the buffered values at each
interval on scheduler. When the receiver completes, any currently-buffered
values will be sent immediately.
Declared In
RACSignal+Operations.hcatch:
Subscribe to the returned signal when an error occurs.
- (RACSignal *)catch:(RACSignal *( ^ ) ( NSError *error ))catchBlockDeclared In
RACSignal+Operations.hcatchTo:
Subscribe to the given signal when an error occurs.
- (RACSignal *)catchTo:(RACSignal *)signalDeclared In
RACSignal+Operations.hcollect
Collect all receiver’s nexts into a NSArray. nil values will be converted
to NSNull.
- (RACSignal *)collectDiscussion
This corresponds to the ToArray method in Rx.
Returns a signal which sends a single NSArray when the receiver completes successfully.
Declared In
RACSignal+Operations.hcombineLatestWith:
Combines the latest values from the receiver and the given signal into
RACTuples, once both have sent at least one next.
- (RACSignal *)combineLatestWith:(RACSignal *)signalDiscussion
Any additional nexts will result in a new RACTuple with the latest values
from both signals.
signal - The signal to combine with. This argument must not be nil.
Returns a signal which sends RACTuples of the combined values, forwards any
error events, and completes when both input signals complete.
Declared In
RACSignal+Operations.hconcat
Concats the inner signals of a signal of signals.
- (RACSignal *)concatDeclared In
RACSignal+Operations.hconcat:
Subscribes to signal when the source signal completes.
- (RACSignal *)concat:(RACSignal *)signalDeclared In
RACSignal.hdelay:
Forwards next and completed events after delaying for interval seconds
on the current scheduler (on which the events were delivered).
- (RACSignal *)delay:(NSTimeInterval)intervalDiscussion
If [RACScheduler currentScheduler] is nil when next or completed is
received, a private background scheduler is used.
Returns a signal which sends delayed next and completed events. Errors
are always forwarded immediately.
Declared In
RACSignal+Operations.hdeliverOn:
Creates and returns a signal that delivers its events on the given scheduler. Any side effects of the receiver will still be performed on the original thread.
- (RACSignal *)deliverOn:(RACScheduler *)schedulerDiscussion
This is ideal when the signal already performs its work on the desired thread, but you want to handle its events elsewhere.
This corresponds to the ObserveOn method in Rx.
Declared In
RACSignal+Operations.hdematerialize
Converts each RACEvent in the receiver back into “real” RACSignal events.
- (RACSignal *)dematerializeDiscussion
Returns a signal which sends next for each value RACEvent, error for each
error RACEvent, and completed for each completed RACEvent.
Declared In
RACSignal+Operations.hdoCompleted:
Do the given block on completed. This should be used to inject side effects
into the signal.
- (RACSignal *)doCompleted:(void ( ^ ) ( void ))blockDeclared In
RACSignal+Operations.hdoError:
Do the given block on error. This should be used to inject side effects
into the signal.
- (RACSignal *)doError:(void ( ^ ) ( NSError *error ))blockDeclared In
RACSignal+Operations.hdoNext:
Do the given block on next. This should be used to inject side effects into
the signal.
- (RACSignal *)doNext:(void ( ^ ) ( id x ))blockDeclared In
RACSignal+Operations.hfinally:
Execute the given block when the signal completes or errors.
- (RACSignal *)finally:(void ( ^ ) ( void ))blockDeclared In
RACSignal+Operations.hfirst
Returns the first next. Note that this is a blocking call.
- (id)firstDeclared In
RACSignal+Operations.hfirstOrDefault:
Returns the first next or defaultValue if the signal completes or errors
without sending a next. Note that this is a blocking call.
- (id)firstOrDefault:(id)defaultValueDeclared In
RACSignal+Operations.hfirstOrDefault:success:error:
Returns the first next or defaultValue if the signal completes or errors
without sending a next. If an error occurs success will be NO and error
will be populated. Note that this is a blocking call.
- (id)firstOrDefault:(id)defaultValue success:(BOOL *)success error:(NSError **)errorDeclared In
RACSignal+Operations.hflatten:
Merges the signals sent by the receiver into a flattened signal, but only
subscribes to maxConcurrent number of signals at a time. New signals are
queued and subscribed to as other signals complete.
- (RACSignal *)flatten:(NSUInteger)maxConcurrentDiscussion
If an error occurs on any of the signals, it is sent on the returned signal. It completes only after the receiver and all sent signals have completed.
This corresponds to Merge<TSource>(IObservable<IObservable<TSource>>, Int32)
in Rx.
maxConcurrent - the maximum number of signals to subscribe to at a time. If 0, it subscribes to an unlimited number of signals.
Declared In
RACSignal+Operations.hgroupBy:
Calls -[RACSignal groupBy:keyBlock transform:nil].
- (RACSignal *)groupBy:(id<NSCopying> ( ^ ) ( id object ))keyBlockDeclared In
RACSignal+Operations.hgroupBy:transform:
Groups each received object into a group, as determined by calling keyBlock
with that object. The object sent is transformed by calling transformBlock
with the object. If transformBlock is nil, it sends the original object.
- (RACSignal *)groupBy:(id<NSCopying> ( ^ ) ( id object ))keyBlock transform:(id ( ^ ) ( id object ))transformBlockDiscussion
The returned signal is a signal of RACGroupedSignal.
Declared In
RACSignal+Operations.hignoreValues
Ignores all nexts from the receiver.
- (RACSignal *)ignoreValuesDiscussion
Returns a signal which only passes through error or completed events from
the receiver.
Declared In
RACSignal+Operations.hinitially:
Execute the given block each time a subscription is created.
- (RACSignal *)initially:(void ( ^ ) ( void ))blockDiscussion
block - A block which defines the subscription side effects. Cannot be nil.
Example:
// Write new file, with backup. [[[[fileManager rac_createFileAtPath:path contents:data] initially:^{ // 2. Second, backup current file [fileManager moveItemAtPath:path toPath:backupPath error:nil]; }] initially:^{ // 1. First, acquire write lock. [writeLock lock]; }] finally:^{ [writeLock unlock]; }];
Returns a signal that passes through all events of the receiver, plus introduces side effects which occur prior to any subscription side effects of the receiver.
Declared In
RACSignal+Operations.hlogCompleted
Logs any completed event that the receiver sends.
- (RACSignal *)logCompletedDeclared In
RACSignal.hmaterialize
Converts each of the receiver’s events into a RACEvent object.
- (RACSignal *)materializeDiscussion
Returns a signal which sends the receiver’s events as RACEvents, and
completes after the receiver sends completed or error.
Declared In
RACSignal+Operations.hmulticast:
Creates and returns a multicast connection that pushes values into the given subject. This allows you to share a single subscription to the underlying signal.
- (RACMulticastConnection *)multicast:(RACSubject *)subjectDeclared In
RACSignal+Operations.hnot
Inverts each NSNumber-wrapped BOOL sent by the receiver. It will assert if the receiver sends anything other than NSNumbers.
- (RACSignal *)notDiscussion
Returns a signal of inverted NSNumber-wrapped BOOLs.
Declared In
RACSignal+Operations.hor
Performs a boolean OR on all of the RACTuple of NSNumbers in sent by the receiver.
- (RACSignal *)orDiscussion
Asserts if the receiver sends anything other than a RACTuple of one or more NSNumbers.
Returns a signal that applies OR to each NSNumber in the tuple.
Declared In
RACSignal+Operations.hpublish
Creates and returns a multicast connection. This allows you to share a single subscription to the underlying signal.
- (RACMulticastConnection *)publishDeclared In
RACSignal+Operations.hrepeat
Resubscribes when the signal completes.
- (RACSignal *)repeatDeclared In
RACSignal+Operations.hreplay
Multicasts the signal to a RACReplaySubject of unlimited capacity, and immediately connects to the resulting RACMulticastConnection.
- (RACSignal *)replayDiscussion
Returns the connected, multicasted signal.
Declared In
RACSignal+Operations.hreplayLast
Multicasts the signal to a RACReplaySubject of capacity 1, and immediately connects to the resulting RACMulticastConnection.
- (RACSignal *)replayLastDiscussion
Returns the connected, multicasted signal.
Declared In
RACSignal+Operations.hreplayLazily
Multicasts the signal to a RACReplaySubject of unlimited capacity, and lazily connects to the resulting RACMulticastConnection.
- (RACSignal *)replayLazilyDiscussion
This means the returned signal will subscribe to the multicasted signal only when the former receives its first subscription.
Returns the lazily connected, multicasted signal.
Declared In
RACSignal+Operations.hretry
Resubscribes to the receiving signal if an error occurs.
- (RACSignal *)retryDeclared In
RACSignal+Operations.hretry:
Resubscribes to the receiving signal if an error occurs, up until it has retried the given number of times.
- (RACSignal *)retry:(NSInteger)retryCountDiscussion
retryCount - if 0, it keeps retrying until it completes.
Declared In
RACSignal+Operations.hsample:
Sends the latest value from the receiver only when sampler sends a value.
The returned signal could repeat values if sampler fires more often than
the receiver. Values from sampler are ignored before the receiver sends
its first value.
- (RACSignal *)sample:(RACSignal *)samplerDiscussion
sampler - The signal that controls when the latest value from the receiver is sent. Cannot be nil.
Declared In
RACSignal+Operations.hsetKeyPath:onObject:
Invokes setKeyPath:onObject:nilValue: with nil for the nil value.
- (RACDisposable *)setKeyPath:(NSString *)keyPath onObject:(NSObject *)objectDeclared In
RACSignal+Operations.hsetKeyPath:onObject:nilValue:
Binds the receiver to an object, automatically setting the given key path on
every next. When the signal completes, the binding is automatically
disposed of.
- (RACDisposable *)setKeyPath:(NSString *)keyPath onObject:(NSObject *)object nilValue:(id)nilValueDiscussion
Sending an error on the signal is considered undefined behavior, and will generate an assertion failure in Debug builds.
A given key on an object should only have one active signal bound to it at any given time. Binding more than one signal to the same property is considered undefined behavior.
keyPath - The key path to update with nexts from the receiver.
object - The object that keyPath is relative to.
nilValue - The value to set at the key path whenever nil is sent by the
receiver. This may be nil when binding to object properties, but
an NSValue should be used for primitive properties, to avoid an
exception if nil is sent (which might occur if an intermediate
object is set to nil).
Returns a disposable which can be used to terminate the binding.
Declared In
RACSignal+Operations.hsubscribe:
Subscribes subscriber to changes on the receiver. The receiver defines which
events it actually sends and in what situations the events are sent.
- (RACDisposable *)subscribe:(id<RACSubscriber>)subscriberDiscussion
Subscription will always happen on a valid RACScheduler. If the [RACScheduler currentScheduler] cannot be determined at the time of subscription (e.g., because the calling code is running on a GCD queue or NSOperationQueue), subscription will occur on a private background scheduler. On the main thread, subscriptions will always occur immediately, with a [RACScheduler currentScheduler] of [RACScheduler mainThreadScheduler].
This method must be overridden by any subclasses.
Returns nil or a disposable. You can call [RACDisposable dispose] if you need to end your subscription before it would “naturally” end, either by completing or erroring. Once the disposable has been disposed, the subscriber won’t receive any more events from the subscription.
Declared In
RACSignal.hsubscribeCompleted:
Convenience method to subscribe to completed events.
- (RACDisposable *)subscribeCompleted:(void ( ^ ) ( void ))completedBlockDiscussion
This corresponds to the IObserver<T>.OnCompleted in Rx.
Declared In
RACSignal.hsubscribeError:
Convenience method to subscribe to error events.
- (RACDisposable *)subscribeError:(void ( ^ ) ( NSError *error ))errorBlockDiscussion
This corresponds to the IObserver<T>.OnError in Rx.
Declared In
RACSignal.hsubscribeError:completed:
Convenience method to subscribe to error and completed events.
- (RACDisposable *)subscribeError:(void ( ^ ) ( NSError *error ))errorBlock completed:(void ( ^ ) ( void ))completedBlockDeclared In
RACSignal.hsubscribeNext:
Convenience method to subscribe to the next event.
- (RACDisposable *)subscribeNext:(void ( ^ ) ( id x ))nextBlockDiscussion
This corresponds to IObserver<T>.OnNext in Rx.
Declared In
RACSignal.hsubscribeNext:completed:
Convenience method to subscribe to the next and completed events.
- (RACDisposable *)subscribeNext:(void ( ^ ) ( id x ))nextBlock completed:(void ( ^ ) ( void ))completedBlockDeclared In
RACSignal.hsubscribeNext:error:
Convenience method to subscribe to next and error events.
- (RACDisposable *)subscribeNext:(void ( ^ ) ( id x ))nextBlock error:(void ( ^ ) ( NSError *error ))errorBlockDeclared In
RACSignal.hsubscribeNext:error:completed:
Convenience method to subscribe to the next, completed, and error events.
- (RACDisposable *)subscribeNext:(void ( ^ ) ( id x ))nextBlock error:(void ( ^ ) ( NSError *error ))errorBlock completed:(void ( ^ ) ( void ))completedBlockDeclared In
RACSignal.hsubscribeOn:
Creates and returns a signal that executes its side effects and delivers its events on the given scheduler.
- (RACSignal *)subscribeOn:(RACScheduler *)schedulerDiscussion
Use of this operator should be avoided whenever possible, because the
receiver’s side effects may not be safe to run on another thread. If you just
want to receive the signal’s events on scheduler, use deliverOn: instead.
Declared In
RACSignal+Operations.hswitchToLatest
Every time the receiver sends a new RACSignal, subscribes and sends nexts and
errors only for that signal.
- (RACSignal *)switchToLatestDiscussion
The receiver must be a signal of signals.
Returns a signal which passes through nexts and errors from the latest
signal sent by the receiver, and sends completed when both the receiver and
the last sent signal complete.
Declared In
RACSignal+Operations.htakeLast:
Takes the last count nexts after the receiving signal completes.
- (RACSignal *)takeLast:(NSUInteger)countDeclared In
RACSignal+Operations.htakeUntil:
Take nexts until the signalTrigger sends next or completed.
- (RACSignal *)takeUntil:(RACSignal *)signalTriggerDiscussion
Returns a signal which passes through all events from the receiver until
signalTrigger sends next or completed, at which point the returned signal
will send completed.
Declared In
RACSignal+Operations.htakeUntilReplacement:
Take nexts until the replacement sends an event.
- (RACSignal *)takeUntilReplacement:(RACSignal *)replacementDiscussion
replacement - The signal which replaces the receiver as soon as it sends an event.
Returns a signal which passes through nexts and error from the receiver
until replacement sends an event, at which point the returned signal will
send that event and switch to passing through events from replacement
instead, regardless of whether the receiver has sent events already.
Declared In
RACSignal+Operations.hthen:
Ignores all nexts from the receiver, waits for the receiver to complete,
then subscribes to a new signal.
- (RACSignal *)then:(RACSignal *( ^ ) ( void ))blockDiscussion
block - A block which will create or obtain a new signal to subscribe to, executed only after the receiver completes. This block must not be nil, and it must not return a nil signal.
Returns a signal which will pass through the events of the signal created in
block. If the receiver errors out, the returned signal will error as well.
Declared In
RACSignal+Operations.hthrottle:
Send nexts only if we don’t receive another next in interval seconds.
- (RACSignal *)throttle:(NSTimeInterval)intervalDiscussion
If a next is received, and then another next is received before
interval seconds have passed, the first value is discarded.
After interval seconds have passed since the most recent next was sent,
the most recent next is forwarded on the scheduler that the value was
originally received on. If [RACScheduler currentScheduler] was nil at the
time, a private background scheduler is used.
Returns a signal which sends throttled and delayed next events. Completion
and errors are always forwarded immediately.
Declared In
RACSignal+Operations.hthrottle:valuesPassingTest:
Throttles nexts for which predicate returns YES.
- (RACSignal *)throttle:(NSTimeInterval)interval valuesPassingTest:(BOOL ( ^ ) ( id next ))predicateDiscussion
When predicate returns YES for a next:
- If another
nextis received beforeintervalseconds have passed, the prior value is discarded. This happens regardless of whether the new value will be throttled. - After
intervalseconds have passed since the value was originally received, it will be forwarded on the scheduler that it was received upon. If [RACScheduler currentScheduler] was nil at the time, a private background scheduler is used.
When predicate returns NO for a next, it is forwarded immediately,
without any throttling.
interval - The number of seconds for which to buffer the latest value that
passes predicate.
predicate - Passed each next from the receiver, this block returns
whether the given value should be throttled. This argument must
not be nil.
Returns a signal which sends next events, throttled when predicate
returns YES. Completion and errors are always forwarded immediately.
Declared In
RACSignal+Operations.htimeout:onScheduler:
Sends an error after interval seconds if the source doesn’t complete
before then.
- (RACSignal *)timeout:(NSTimeInterval)interval onScheduler:(RACScheduler *)schedulerDiscussion
The error will be in the RACSignalErrorDomain and have a code of RACSignalErrorTimedOut.
interval - The number of seconds after which the signal should error out. scheduler - The scheduler upon which any timeout error should be sent. This must not be nil or [RACScheduler immediateScheduler].
Returns a signal that passes through the receiver’s events, until the stream
finishes or times out, at which point an error will be sent on scheduler.
Declared In
RACSignal+Operations.htoArray
Add every next to an array. Nils are represented by NSNulls. Note that this
is a blocking call.
- (NSArray *)toArrayDiscussion
This is not the same as the ToArray method in Rx. See collect for
that behavior instead.
Returns the array of next values, or nil if an error occurs.
Declared In
RACSignal+Operations.htry:
Runs tryBlock against each of the receiver’s values, passing values
until tryBlock returns NO, or the receiver completes.
- (RACSignal *)try:(BOOL ( ^ ) ( id value , NSError **errorPtr ))tryBlockDiscussion
tryBlock - An action to run against each of the receiver’s values. The block should return YES to indicate that the action was successful. This block must not be nil.
Example:
// The returned signal will send an error if data values cannot be
// written to someFileURL.
[signal try:^(NSData *data, NSError **errorPtr) {
return [data writeToURL:someFileURL options:NSDataWritingAtomic error:errorPtr];
}];
Returns a signal which passes through all the values of the receiver. If
tryBlock fails for any value, the returned signal will error using the
NSError passed out from the block.
Declared In
RACSignal+Operations.htryMap:
Runs mapBlock against each of the receiver’s values, mapping values until
mapBlock returns nil, or the receiver completes.
- (RACSignal *)tryMap:(id ( ^ ) ( id value , NSError **errorPtr ))mapBlockDiscussion
mapBlock - An action to map each of the receiver’s values. The block should return a non-nil value to indicate that the action was successful. This block must not be nil.
Example:
// The returned signal will send an error if data cannot be read from
// fileURL.
[signal tryMap:^(NSURL *fileURL, NSError **errorPtr) {
return [NSData dataWithContentsOfURL:fileURL options:0 error:errorPtr];
}];
Returns a signal which transforms all the values of the receiver. If
mapBlock returns nil for any value, the returned signal will error using
the NSError passed out from the block.
Declared In
RACSignal+Operations.hwaitUntilCompleted:
- (BOOL)waitUntilCompleted:(NSError **)errorDiscussion
error - If not NULL, set to any error that occurs.
Returns whether the signal completed successfully. If NO, error will be set
to the error that occurred.
Declared In
RACSignal+Operations.hzipWith:
Zips the values in the receiver with those of the given signal to create RACTuples.
- (RACSignal *)zipWith:(RACSignal *)signalDiscussion
The first next of each stream will be combined, then the second next, and
so forth, until either signal completes or errors.
signal - The signal to zip with. This must not be nil.
Returns a new signal of RACTuples, representing the combined values of the two signals. Any error from one of the original signals will be forwarded on the returned signal.
Declared In
RACSignal.h