#import "SSignal.h" @interface SSignal () { } @end @implementation SSignal - (instancetype)initWithGenerator:(id (^)(SSubscriber *))generator { self = [super init]; if (self != nil) { _generator = [generator copy]; } return self; } - (id)startWithNext:(void (^)(id next))next error:(void (^)(id error))error completed:(void (^)())completed { SSubscriber *subscriber = [[SSubscriber alloc] initWithNext:next error:error completed:completed]; id disposable = _generator(subscriber); [subscriber _assignDisposable:disposable]; return disposable; } - (id)startWithNext:(void (^)(id next))next { SSubscriber *subscriber = [[SSubscriber alloc] initWithNext:next error:nil completed:nil]; id disposable = _generator(subscriber); [subscriber _assignDisposable:disposable]; return disposable; } - (id)startWithNext:(void (^)(id next))next completed:(void (^)())completed { SSubscriber *subscriber = [[SSubscriber alloc] initWithNext:next error:nil completed:completed]; id disposable = _generator(subscriber); [subscriber _assignDisposable:disposable]; return disposable; } @end