初学RAC(一)
一:简单介绍RAC
RAC全称ReactiveCocoa,,RAC是Github上由19人团队开发的重量级开源框架,它有四大家族,分别为Cocoa,objc(OCx项目尽量使用它),swift(纯Swift也少使用它,很难用),Bridge(OC和swift使用他)。可以在日常开发中简单粗暴的帮开发者处理事件,这些事件常见的有(Target,Delegate,KVO,通知,时钟,网络异步回调等)。
二:基于OC语言通过cocopods配置RAC
1.创建一个项目,我自己命名为RACDemo
2.打开MAC终端配置RAC
三:RAC框架的简单使用
1:在上写法之前,我们先看RAC的流程图,如下
2.RAC的中RACSingal的两种写法
(1)初级写法
2:装逼写法
四:RAC监听几种控件的写法
1:监听TextField写法
-(void)RACofTextField{
UITextField *nameTextField =[[UITextField alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width,50)];
[self.view addSubview:nameTextField];
[[nameTextField rac_textSignal]subscribeNext:^(NSString * _Nullable x) {
NSLog(@"%@",x);
}];
}
2:监听按钮的写法
-(void)RACofButton
{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = self.view.bounds;
[self.view addSubview:button];
[[button rac_signalForControlEvents:(UIControlEventTouchUpInside)] subscribeNext:^(__kindof UIControl * _Nullable x) {
NSLog(@"%@",x) ;
}];
}
3:监听通知的写法
-(void)RACofNotification
{
[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIApplicationDidEnterBackgroundNotification object:nil]subscribeNext:^(NSNotification * _Nullable x) {
NSLog(@"%@",x);
}];
}
五:RAC最大的坑是循环引用,在block里面,前面不要去使用self, 如果要使用可以用@weakify(self)[用在外面打断循环引用], @strongify(self)[用在里面防止控制器销毁block销毁];
-(void)RACofTextField{
self.nameTextField =[[UITextField alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width,50)];
[self.view addSubview:nameTextField];
@weakify(self)
[[self.nameTextField rac_textSignal]subscribeNext:^(NSString * _Nullable x) {
@strongify(self)
NSLog(@"%@",x);
}];
}