ReactiveCocoa入门教程之信号的使用
来源:互联网 发布:win平板装ubuntu 编辑:程序博客网 时间:2024/05/17 09:15
写在之前
ReactiveCocoa是什么,它是Github上的一个开源的函数响应式编程框架,下面简称RAC
他的作用是帮我们很简单的处理事件,这里要注意,目前RAC有针对oc跟swift两个类库,OC对应的是ReactiveObjC,swift对应的则是ReactiveCocoa,目前已经是5.0.0
版本。
虽然我公司项目已经使用swift进行开发,但是考虑到还有部分没有使用因此这边围绕OC语言版本展开描述。
因为RAC框架中对于block的大量使用,对block不熟悉的同学可以先补课一波。
1、导入ReactiveObjC
这里使用CocoaPods导入,假设大家已经安装好了CocoaPods,没装的自行百度呀。新建简单工程,cd到工程跟目录下,然后Podfile文件内容如下:
use_frameworks!platform :ios, "8.0"target '002--RAC' do pod 'ReactiveObjC'end
这里注意,002–RAC=要换成你新建的工程名称=
2、创建信号并发送数据
在RAC里面,一切皆信号,信号可以发送数据,接收数据
//1、创建信号,刚创建的时候是冷信号RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) { //3、订阅者发送数据 [subscriber sendNext:@"发送内容"]; _subscriber = subscriber; //这边把订阅者保存下来就不会自动取消订阅 return [RACDisposable disposableWithBlock:^{ //取消订阅信号就会来到这里,清空资源 NSLog(@"取消订阅信号"); }];}];//2、订阅信号,这时候变成热信号//下面这个block只要subscriber发送数据,这边就会调用,可调用多次RACDisposable *disposable = [signal subscribeNext:^(id _Nullable x) { //x:信号发送的内容!! NSLog(@"%@",x);}];//这边即使不调用,默认一个信号发送完收据会主动取消订阅[disposable dispose]; //手动取消订阅RACSubject的使用://1、创建信号RACSubject *subject = [RACSubject subject];//2、订阅信号//这边是可以保存多个订阅者[subject subscribeNext:^(id _Nullable x) { NSLog(@"接收到的数据1:%@",x);}];[subject subscribeNext:^(id _Nullable x) { NSLog(@"接收到的数据2:%@",x);}];//3.发送数据//遍历出所有的订阅者,调用nextBlock[subject sendNext:@"汉堡包"];
分析一下各个类作用:
RACSignal 信号类-最常见也是最常用的类
1. 创建信号
2. 通过订阅者订阅信号
3. 发送信号
RACDisposable 当信号发送完毕,或者发送失败,帮助我们取消订阅
RACSubscriber是一个协议,也是定阅者-发送信号
RACSubject 继承RACSignal,信号提供者,既可以充当信号,又可以发送信号
0 0
- ReactiveCocoa入门教程之信号的使用
- iOS之ReactiveCocoa入门教程
- ReactiveCocoa学习之创建信号
- ReactiveCocoa入门教程
- ReactiveCocoa入门教程
- ReactiveCocoa入门教程
- ReactiveCocoa 的使用
- ReactiveCocoa 的RACMulticastConnection使用
- 细说ReactiveCocoa的冷信号与热信号(一)
- 细说ReactiveCocoa的冷信号与热信号(一)
- ReactiveCocoa之RACCommand使用(五)
- ReactiveCocoa之RACMulticastConnection使用(六)
- ReactiveCocoa之RACCommand使用(五)
- ReactiveCocoa之RACMulticastConnection使用(六)
- ReactiveCocoa之RACSignal核心类的使用(三)
- ReactiveCocoa之核心方法bind的使用(十一)
- ReactiveCocoa之RACSignal核心类的使用(三)
- XZ_iOS之RAC(ReactiveCocoa)的介绍和使用
- Python 基础 —— global 与 nonlocal
- hosts文件的作用
- Struts2第七篇【介绍拦截器、自定义拦截器、执行流程、应用】
- TortoiseGit之配置密钥
- 关于ionic ion-nav-back-button 标题隐藏及修改
- ReactiveCocoa入门教程之信号的使用
- ??? Error using ==> nlinfit at 127 MODELFUN should return a vector of fitted values the same length
- 商品展示案例
- 项目进度管理·八
- 【JQuery:多个页面在同一个div内显示】
- 4868: [Shoi2017]期末考试
- 图论-最短路径-spfa两种实现方式-poj3259
- centos 7 , mac os 安装fish shell
- Spark之SparkStreaming案例-transform