ReactiveCocoa学习之创建信号
来源:互联网 发布:淘宝网工程抢险车警灯 编辑:程序博客网 时间:2024/05/21 10:19
ReactiveCocoa 是一个 iOS 中的函数式响应式编程框架,简称RAC,RAC关键解决的问题是开发中经常回见的“低聚合,高耦合”问题。在RAC出现之前,我们编写iOS代码,大部分都是在响应一些事件:按钮点击、接收网络消息、属性变化等等。但处理事件的形式在苹果官方API中却有好几种:如target-action、代理方法、KVO、回调或其它。以上这几种,往往在一个项目中基本都会使用到,在不同的地方会出现很多处理事件的形式,这就带来了不能很好统一管理问题。因此,我们想,有没有一个统一管理的解决方案呢?这个方案又是怎样的呢?到这里ReactiveCocoa就该粉墨登场了,它出现的目的就是为了解决统一标准去管理代码中的事件。
RAC在使用时,通过“信号”来传递信息,使用信号的三部曲:1.创建信号,2.订阅信号,3.发送信号;
下面具体看下几种信号类的使用:
一、RACSignal,这是所有信号类的父类
//1创建信号
RACSignal *signal = [RACSignalcreateSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
//3发送信号
[subscriber sendNext:@"111"];
[subscriber sendNext:@"111"];
[subscriber sendNext:@"111"];
return nil;
}];
//2订阅信号, 必须先订阅才能发送
[signal subscribeNext:^(id x) {
NSLog(@"%@",x);
}];
二、RACSubject
//1创建信号
RACSubject *subject = [RACSubjectsubject];
//2订阅信号
//不同信号订阅方式不一样,RACSubject处理订阅:仅仅是保存订阅
[subject subscribeNext:^(id x) {
NSLog(@"订阅者一接收到数据");
}];
//3.发送数据
[subject sendNext:@"9999"];
//1创建信号
RACReplaySubject *subject = [RACReplaySubjectsubject];
//2订阅信号
[subject subscribeNext:^(id x) {
NSLog(@"%@",x);
}];
//3发送信号
[subject sendNext:@"yyyyy"];
上面就是常用的三种信号类,我们实际开发中多数使用前两种。
- ReactiveCocoa学习之创建信号
- ReactiveCocoa入门教程之信号的使用
- ReactiveCocoa指南一:信号
- ReactiveCocoa指南一:信号
- ReactiveCocoa信号使用方法
- ReactiveCocoa信号使用方法
- ReactiveCocoa 学习之路(史上最全攻略)
- reactiveCocoa学习
- ReactiveCocoa学习
- ReactiveCocoa学习
- ReactiveCocoa学习
- ReactiveCocoa学习
- ReactiveCocoa简介四,聚合信号
- ReactiveCocoa信号高阶操作
- PHP学习之信号
- APUE学习之------------信号
- iOS学习笔记(29) 爱不释手的ReactiveCocoa之UIButton
- reactiveCocoa实践三(信号组合)
- 前端面试题之mouseover和mouseenter的区别
- Python点滴
- linux内核文件权限管理
- Spring的IOC原理(转载)
- android新特性:使用CollapsingToolbarLayout实现折叠效果及问题解决
- ReactiveCocoa学习之创建信号
- oracle中sysdate时间的加减
- 2017-4-17
- 背景建模算法
- CSS3的背景
- Apache下的FileUtils.listFiles方法简单使用技巧
- 微信网页开发
- 【SPFA模板】nyoj1274 信道安全 9th河南省赛;
- HEVC集成