initial commit

This commit is contained in:
Caleb
2026-03-01 15:59:27 +08:00
commit a9e97d56cb
1426 changed files with 172367 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
//
// UIControl+RACSignalSupportPrivate.m
// ReactiveObjC
//
// Created by Uri Baghin on 06/08/2013.
// Copyright (c) 2013 GitHub, Inc. All rights reserved.
//
#import "UIControl+RACSignalSupportPrivate.h"
#import "NSObject+RACDeallocating.h"
#import "NSObject+RACLifting.h"
#import "RACChannel.h"
#import "RACCompoundDisposable.h"
#import "RACDisposable.h"
#import "RACSignal+Operations.h"
#import "UIControl+RACSignalSupport.h"
@implementation UIControl (RACSignalSupportPrivate)
- (RACChannelTerminal *)rac_channelForControlEvents:(UIControlEvents)controlEvents key:(NSString *)key nilValue:(id)nilValue {
NSCParameterAssert(key.length > 0);
key = [key copy];
RACChannel *channel = [[RACChannel alloc] init];
[self.rac_deallocDisposable addDisposable:[RACDisposable disposableWithBlock:^{
[channel.followingTerminal sendCompleted];
}]];
RACSignal *eventSignal = [[[self
rac_signalForControlEvents:controlEvents]
mapReplace:key]
takeUntil:[[channel.followingTerminal
ignoreValues]
catchTo:RACSignal.empty]];
[[self
rac_liftSelector:@selector(valueForKey:) withSignals:eventSignal, nil]
subscribe:channel.followingTerminal];
RACSignal *valuesSignal = [channel.followingTerminal
map:^(id value) {
return value ?: nilValue;
}];
[self rac_liftSelector:@selector(setValue:forKey:) withSignals:valuesSignal, [RACSignal return:key], nil];
return channel.leadingTerminal;
}
@end