3RAC

iOS RAC https://www.jianshu.com/p/cd4031fbf8ff


1监听方法的调用:运行时的消息拦截

[[self.redView rac_signalForSelector:@selector(btnClick:)] subscribeNext:^(RACTuple * _Nullable x) {


        NSLog(@"%@",x);

    }];



2监听值得变化:

[_phoneNumberTextField rac_textSignal] : 动态监听文本框内容

RACObserve(_phoneNumberTextField, text):文本框失去焦点才监听到变化;



//方法1 更多选项设置,在有新值的时候才监听到

[_redView rac_observeKeyPath:@"frame" options:NSKeyValueObservingOptionNew observer:nil block:^(id value, NSDictionary *change, BOOL causedByDealloc, BOOL affectedOnlyLastComponent) { NSLog(@"1 - %@",value); }];


//方法2

    [[_redView rac_valuesForKeyPath:@"frame" observer:nil] subscribeNext:^(id  _Nullable x) {

        NSLog(@"2 - %@",x);

    }];


//方法三

    [RACObserve(_redView, frame) subscribeNext:^(id  _Nullable x) {

        NSLog(@"3 - %@",x);

    }];



3监听点击事件

[[_btn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) { NSLog(@"%@",x); }];



4通知

[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardDidShowNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {

        NSLog(@"%@",x);

    }];




5UITextField

[_textField.rac_textSignal subscribeNext:^(NSString * _Nullable x) {

        NSLog(@"%@",x);

    }];

//简单使用   RAC(对象,对象的属性) = (一个信号);

RAC(_label,text) = _textField.rac_textSignal;



6 代替代理:用流的方式传送数据

RACSubject 可以自己定义发送signal的时间





RAC能节省时间的:通知,协议,UITextField,点击事件(回调代码不多可用),监听值的变化

  1. 目前来看没看出简单一些;



4 RAC进阶  + MVVM


视图(View):用户界面 

模型(Model):数据存储 

ViewModel:数据请求, 数据处理, 业务逻辑。



  1. MVVMViewController视作View
  2. ViewModel之间没有紧密的联系,一般的与View是一对一的关系。ViewModelView之间是双向交互的
  3. 使用 MVVM 最舒服的姿势是搭配现在已经比较成熟的 ReactiveCocoa



  1. MVVM: http://googleoss.com/2016/04/21/RAC-MVVM%E5%9C%A8%E5%AE%9E%E9%99%85%E9%A1%B9%E7%9B%AE%E4%B8%AD%E7%9A%84%E7%94%A8%E6%B3%95/





学习RACBlock

RAC的学习,需要Block的强强结合:强引用和引用的区别

  1. 一切都是流



已经完成:

RAChttps://www.jianshu.com/p/f068f5783d82



RAC

https://www.jianshu.com/p/f32a4824797e

http://mobile.51cto.com/hot-511365.htm

https://www.cnblogs.com/CoderEYLee/p/6640503.html

https://www.cnblogs.com/CoderEYLee/p/Object-C-0010.html

https://www.jianshu.com/p/0845b1a07bfa

https://www.jianshu.com/p/eae223df2a19

https://www.jianshu.com/p/3beb21d5def2

https://www.jianshu.com/p/f068f5783d82

https://www.jianshu.com/p/7b8a323670c5?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

https://www.jianshu.com/p/064f81e28a28

https://www.jianshu.com/p/cd4031fbf8ff

http://blog.leichunfeng.com/blog/2015/12/25/reactivecocoa-v2-dot-5-yuan-ma-jie-xi-zhi-jia-gou-zong-lan/

https://github.com/ReactiveCocoa/ReactiveObjC




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值