初玩RAC

发布时间:2017-7-1 10:52:24编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"初玩RAC ",主要涉及到初玩RAC 方面的内容,对于初玩RAC 感兴趣的同学可以参考一下。

之前因为项目的原因以及ReactiveCocoa框架导入到项目老是报错的原因,导致我这边一直没有能好好的将ReactiveCocoa运行起来,最近看了Hank老师的视频,而且项目中我们使用的就是OC,因此还是决定使用ReactiveObjC来尝试一下RAC。

1、下面是写的Demo界面代码:

 1 -(void)createUI 2 { 3     self.view.backgroundColor =[UIColor whiteColor]; 4      5     UIView  * view = [UIView new]; 6     view.backgroundColor = [UIColor orangeColor]; 7     [self.view addSubview:view]; 8      9     _view =view;10 11     [view mas_makeConstraints:^(MASConstraintMaker *make) {12         make.left.top.mas_offset(10);13         make.right.mas_offset(-10);14         make.height.mas_equalTo(100);15         16     }];17     18     UIButton  * btn = [[UIButton alloc] init];19     _btn=btn;20     btn.backgroundColor  =[UIColor redColor];21     [view addSubview:btn];22     //注意的是当视图为空的时候,界面当然没有办法进行添加,然后自然就会崩溃了23     [btn addTarget:_view action:@selector(btnAction) forControlEvents:UIControlEventTouchUpInside];24     [btn mas_makeConstraints:^(MASConstraintMaker *make) {25         make.left.top.mas_offset(20);26         make.right.mas_offset(-20);27         make.height.mas_offset(60);28     }];29     30     UIView * testGes = [UIView new];31     testGes.backgroundColor = [UIColor redColor];32     [self.view addSubview:testGes];33     [testGes mas_makeConstraints:^(MASConstraintMaker *make) {34         make.top.mas_equalTo(_view.mas_bottom).offset(20);35         make.left.mas_equalTo(self.view.mas_left).offset(20);36         make.right.mas_equalTo(self.view.mas_right).offset(-20);37         make.height.mas_equalTo(100);38     }];39     40 #pragma  可以截取到41     //1、使用手势也是可以获取到事件,可以截取到42     UITapGestureRecognizer * ges = [[UITapGestureRecognizer alloc]init];43     [testGes addGestureRecognizer:ges];44     45     [[ges rac_gestureSignal]subscribeNext:^(__kindof UIGestureRecognizer * _Nullable x) {46         NSLog(@"触发点击事件");47     }];48 49     50 }




2、RAC代码:

-(void)createRac{    #pragma 能截取到    // 1、View首先不能为空,然后target上面可以添加到其他View上面 2、进行按钮事件点击事件监听,按钮是没有问题的 rac_signalForSelector    [[_view rac_signalForSelector:@selector(btnAction)] subscribeNext:^(RACTuple * _Nullable x) {        NSLog(@"监听按钮点击事件");    }];#pragma 不能截取到   //1、使用本身的视图进行监听是没有办法截取到自身的点击事件rac_signalForSelector    [[_btn rac_signalForSelector:@selector(btnAction)] subscribeNext:^(RACTuple * _Nullable x) {        NSLog(@"按钮监听");    }];#pragma 能截取到    //1、截取button的点击事件的话就直接使用rac_signalForControlEvents    [[_btn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) {        NSLog(@"截取按钮点击事件");    }];}-(void)btnAction{    NSLog(@"按钮点击事件");    //1、可以截取到方法,则没有崩溃,现在若是没有截取到就会造成程序崩溃!}
View Code


【注】说说感受:现在的理解就是,在玩RAC的时候,看了篇文章,上面讲解的时候,说明了其实本质上,RAC在拦截方法,类似于苹果CoreContext劫持方法,即苹果原生和JS互相调用的原理是一样的,因此特别注意了这个问题!

  1、当然现在还没有搞清楚为什么加在_View上面,但是截取到btnAction方法的时候,则直接跳到自己截取到的方法里面!假如没有截取到,就崩溃!说明在这边RAC截取方式就是通过类似于JS劫持的方式来拦截到调用方法的!




上一篇:ETL学习整理 PostgreSQL
下一篇:BIOS基础

相关文章

关键词: 初玩RAC

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款