ReactiveCocoa(RAC)学习

本文介绍了ReactiveCocoa(RAC)在开发中的常见应用场景,包括监听按钮点击事件、手势、遍历数组和字典、观察值变化、UITextField输入、替代代理、通知以及监听方法调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发中ReactiveCocoa(RAC)常见用法


RAC监听按钮点击事件

[[self.button rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {
    NSLog(@"RAC检测按钮点击");
}];
//或者:
self.button.rac_command = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
    NSLog(@"RAC检测按钮点击2");
    return [RACSignal empty]; //返回空信号
}];

RAC监听手势

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
[[tap rac_gestureSignal] subscribeNext:^(id x) {
    NSLog(@"RAC检测手势");
}];
self.imageView.userInteractionEnabled = YES;
[self.imageView addGestureRecognizer:tap];

RAC遍历数组 / 字典

//遍历数组
NSArray *array = @[@1,@3,@55,@76,@56,@45];

//1>把数组转换成集合RACSequence array.rac_sequence
//2>把集合RACSequence转换RACSignal信号类,array.rac_sequence.signal
//3>订阅信号,激活信号,会自动把集合中的所有值,遍历出来。
[array.rac_sequence.signal subscribeNext:^(id x) {
    NSLog(@"RAC遍历数组元素:%@",x);
}];

//遍历字典
NSDictionary *dict = @{@"name":@"stevin",@"location":@"Beijing"};
//RACTuple:元组类,类似NSArray,用来包装值.
//RACSequence:RAC中的集合类,用于代替NSArray,NSDictionary,可以使用它来快速遍历数组和字典。
[dict.rac_sequence.signal subscribeNext:^(RACTuple *x) {
    //解包元组,会把元组的值,按顺序给参数里面的变量赋值
    RACTupleUnpack(NSString *key, NSString *value) = x;
    NSLog(@"RAC遍历字典键值:%@--%@",key,value);
}];

RAC观察值改变

//监听本类属性string值得变化并打印
[RACObserve(self, string) subscribeNext:^(NSString *string) {
    NSLog(@"RAC检测值改变:%@",string);
}];

RAC监听UITextField输入

[self.textFieldName.rac_textSignal subscribeNext:^(id x) {
    NSLog(@"RAC监听TextField输入:%@",x);
}];
[[self.textFieldName.rac_textSignal filter:^BOOL(id value) {
    NSString *text = value;
    //只有当文本框的内容长度大于3,才获取文本框里的内容
    return text.length > 3;
}] subscribeNext:^(id x) {
    NSLog(@"RAC检测到输入了长度大于3的内容:%@",x);
}];

RAC代替代理Delegate

[[self rac_signalForSelector:@selector(tableViewCell:buttonClick:) fromProtocol:@protocol(TableViewCellDelegate)] subscribeNext:^(id x) {
    NSLog(@"RAC代理响应成功");
}];

RAC观察通知Notification

[[[NSNotificationCenter defaultCenter] rac_addObserverForName:NotificationName object:nil] subscribeNext:^(NSNotification *notification) {
    NSLog(@"RAC通知响应成功:%@",notification.userInfo);
}];

RAC监听方法被调用

[[self rac_signalForSelector:@selector(tableView:numberOfRowsInSection:)] subscribeNext:^(id x) {
    NSLog(@"tableView:numberOfRowsInSection:被调用!");
}];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值