RAC学习四-RAC学习四(RAC常用方法)

本文通过实例演示了如何使用ReactiveCocoa(RAC)来代替代理、监听事件、代替通知、监听文本框改变及代替KVO等操作。利用RAC进行事件监听和响应的方式能够极大地提高代码的可读性和维护性。

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

1.代替代理
 /* 1.代替代理 */
self.textField.delegate = self;
[[self rac_signalForSelector:@selector(textFieldDidBeginEditing:)fromProtocol:@protocol(UITextFieldDelegate)] subscribeNext:^(RACTuple * _Nullable x) {
     RACTupleUnpack(UITextField *textField) = x;
     NSLog(@"textField:%@",textField);
}];
2.监听事件
 /** 2.监听事件 */
[[self.button rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIButton * _Nullable x) {
     self.textField.text = @"88888888888";
}];
3.代替通知
 /** 3.代替通知 */
 [[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"Mr_zhang's" object:nil] subscribeNext:^(NSNotification * _Nullable x) {
     NSLog(@"----%@----",x.name);
     NSDictionary *dict = x.object;
     NSLog(@"%@",dict);
}];
NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mr_zhang",@"name",@"26",@"age",nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"Mr_zhang's" object:dict];
4.监听文本框改变
/** 4.监听文本框改变 */
[[self.textField rac_textSignal] subscribeNext:^(NSString * _Nullable x) {
     NSLog(@"%@",x);
}];
5.代替KVO
/** 4.代替KVO */
[self.textField rac_observeKeyPath:@"text" options:NSKeyValueObservingOptionOld |NSKeyValueObservingOptionNew  observer:nil block:^(id value, NSDictionary *change, BOOL causedByDealloc, BOOL affectedOnlyLastComponent) {
     //回调
     NSLog(@"value%@---%@",value,change);
}];

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    self.textField.text = @"222";
}

总结:使用RAC这些方法,可以让我们监听的事件或者使用的方法,都可以在Block回调到,代码可读性也大大提高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值