2017-12-27

                                                                                        初学RAC(一)

一:简单介绍RAC

RAC全称ReactiveCocoa,,RAC是Github上由19人团队开发的重量级开源框架,它有四大家族,分别为Cocoa,objc(OCx项目尽量使用它),swift(纯Swift也少使用它,很难用),Bridge(OC和swift使用他)。可以在日常开发中简单粗暴的帮开发者处理事件,这些事件常见的有(Target,Delegate,KVO,通知,时钟,网络异步回调等)。


2017-12-27_第1张图片

二:基于OC语言通过cocopods配置RAC

1.创建一个项目,我自己命名为RACDemo

2.打开MAC终端配置RAC


2017-12-27_第2张图片
2017-12-27_第3张图片

三:RAC框架的简单使用

1:在上写法之前,我们先看RAC的流程图,如下

2.RAC的中RACSingal的两种写法

(1)初级写法


2017-12-27_第4张图片

2:装逼写法


2017-12-27_第5张图片

四: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); 

    }];

}

你可能感兴趣的:(2017-12-27)