ReactiveObjC的基本使用

关于ReactiveObjC的使用,其实在16年的时候就已经被开发者们开始使用,之前一直没有触及到,最近写项目的时候,关于这个动态响应链的框架有了一些了解,确实非常粗暴强大,在这里记录一下基本的一些使用。

1.替代delegate

创建RACSubject 信号,用来替代代理,使用方法如下:

/* 创建信号 */
RACSubject *subject = [RACSubject subject];

/* 发送信号 */
[subject sendNext:@"发送信号"];

在别的地方使用的时候

/* 订阅信号(通常在别的视图控制器中订阅,与代理的用法类似) */
[subject subscribeNext:^(id  _Nullable x) {

    NSLog(@"信号内容:%@", x);
}];

2.信号的删除

由于信号一般创建后,相当于是全局的,如果这个对象的信号没有随着对象被释放,那么在全局任何时候都是可以触发这个信号源的。(常见的是对导航栏监控了信号源,如果不在某个页面进行释放掉这个信号源,那么全局的导航栏只要触发了导航栏方法,就会触发这个信号源)

/* 创建信号 */
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {

    /* 发送信号 */
    [subscriber sendNext:@"发送信号"];

    return nil;
}];

/* 订阅信号 */
RACDisposable *disposable = [signal subscribeNext:^(id  _Nullable x) {

    NSLog(@"信号内容:%@", x);
}];

/* 取消订阅 */
[disposable dispose];

3.监听 TextField 的输入改变(其他控件差不多的使用方法,这里举个例子)

/* 监听 TextField 的输入(内容改变就会调用) */
[[textField rac_textSignal] subscribeNext:^(NSString * _Nullable x) {

    NSLog(@"输入框内容:%@", x);
}];

/* 添加监听条件 */
[[textField.rac_textSignal filter:^BOOL(NSString * _Nullable value) {

    return value.length > 5; // 表示输入文字长度 > 5 时才会调用下面的 block

}] subscribeNext:^(NSString * _Nullable x) {

     NSLog(@"输入框内容:%@", x);
}];

4.代理KVO监听

可以代替 KVO 监听,下面表示把监听 view 的 frame 属性改变转换成信号,只要值改变就会发送信号。

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

    NSLog(@"属性的改变:%@", x); // x 是监听属性的改变结果
}];

还有一种更简单的写法,就是利用 RAC 的宏,和上面的效果是一样的。
[RACObserve(view, frame) subscribeNext:^(id _Nullable x) {

NSLog(@"属性的改变:%@", x); // x 是监听属性的改变结果

}];

5.监听方法

可以直接对某个控制器内部的方法进行操作一系列代码,挺牛b的.

[[h5VC rac_signalForSelector:@selector(viewWillAppear:)] subscribeNext:^(RACTuple * _Nullable x) {
                        //在viewwillappear的时候做一系列操作
                    }];

暂时先就这么多,以后再更新,很多可以举一反三的,非常强大,之前有接触过但没怎么用,现在也给我集成项目中了,除了能带来一些方便以外,确实还能解决一些我们平时无法做的的操作,所以我才用了0.0(当无计可施的时候,用了这个才发现有用呀)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,780评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,852评论 25 709
  • 2017年12月6日下午放学后,神农镇中心幼儿园党员同志和帮扶教师一起带上孩子喜爱的玩具,去幼儿家中详细了解幼儿家...
    远方的灵芝草阅读 3,345评论 0 0
  • 08年,高考失利。挣扎了一暑假,被迫去复读。高考失利的当然不止我一个人,有人选择来复读,有人继续上大学,有人辍学。...
    孽孽阅读 1,801评论 0 0
  • 2016年12月19日群资料整理目录 谈论分享一:生活中察觉到贴标签的妙用 谈论分享二:真爱祈祷文,让你放松自己 ...
    丽的自白书阅读 1,787评论 0 0

友情链接更多精彩内容