12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- //
- // UIControl+RACSignalSupport.m
- // ReactiveObjC
- //
- // Created by Josh Abernathy on 4/17/12.
- // Copyright (c) 2012 GitHub, Inc. All rights reserved.
- //
- #import "UIControl+RACSignalSupport.h"
- #import <ReactiveObjC/RACEXTScope.h>
- #import "RACCompoundDisposable.h"
- #import "RACDisposable.h"
- #import "RACSignal.h"
- #import "RACSubscriber.h"
- #import "NSObject+RACDeallocating.h"
- #import "NSObject+RACDescription.h"
- @implementation UIControl (RACSignalSupport)
- - (RACSignal *)rac_signalForControlEvents:(UIControlEvents)controlEvents {
- @weakify(self);
- return [[RACSignal
- createSignal:^(id<RACSubscriber> subscriber) {
- @strongify(self);
- [self addTarget:subscriber action:@selector(sendNext:) forControlEvents:controlEvents];
- RACDisposable *disposable = [RACDisposable disposableWithBlock:^{
- [subscriber sendCompleted];
- }];
- [self.rac_deallocDisposable addDisposable:disposable];
- return [RACDisposable disposableWithBlock:^{
- @strongify(self);
- [self.rac_deallocDisposable removeDisposable:disposable];
- [self removeTarget:subscriber action:@selector(sendNext:) forControlEvents:controlEvents];
- }];
- }]
- setNameWithFormat:@"%@ -rac_signalForControlEvents: %lx", RACDescription(self), (unsigned long)controlEvents];
- }
- @end
|