前言
写技术文章和学技术是一样的,一定要持之以恒才能攻克它,我还继续在写,你们一定要坚持学下去哦。今天是第三天的学习任务了,有人反馈说,已经对RAC的代理机制爱不释手了,哈哈,这是好现象,今天要讲的是剩下的部分。也属于比较基础的应用,希望和我一起来掌握一下。
RACSequence和RACTuple简单使用
RACSequence是RAC中的集合类,用于代替NSArray,NSDictionary,可以使用它来快速遍历数组和字典。
遍历数组:
- 第一步: 把数组转换成集合RACSequence numbers.rac_sequence
- 第二步:把集合RACSequence转换RACSignal信号类,numbers.rac_sequence.signal
- 第三步: 订阅信号,激活信号,会自动把集合中的所有值,遍历出来。
代码展示
遍历字典:
遍历出来的键值对会包装成RACTuple(元组对象)
字典转模型:
RACMulticastConnection简单使用
需求:假设在一个信号中发送请求,每次订阅一次都会发送请求,这样就会导致多次请求。
解决:使用RACMulticastConnection就能解决.
使用步骤:
- 第一步: 创建信号 + (RACSignal *)createSignal:(RACDisposable * (^)(id<RACSubscriber> subscriber))didSubscribe
- 第二步:创建连接 RACMulticastConnection *connect = [signal publish];
- 第三步: 订阅信号,注意:订阅的不在是之前的信号,而是连接的信号。 [connect.signal subscribeNext:nextBlock]
- 第四步: 订阅信号,注意:订阅的不在是之前的信号,而是连接的信号。 [connect.signal subscribeNext:nextBlock]
1.创建请求信号
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"发送请求");
return nil;
}];
// 2.订阅信号
[signal subscribeNext:^(id x) {
NSLog(@"接收数据");
}];
// 2.订阅信号
[signal subscribeNext:^(id x) {
NSLog(@"接收数据");
}];
// 3.运行结果,会执行两遍发送请求,也就是每次订阅都会发送一次请求
// RACMulticastConnection:解决重复请求问题
// 1.创建信号
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"发送请求");
[subscriber sendNext:@1];
return nil;
}];
// 2.创建连接
RACMulticastConnection *connect = [signal publish];
// 3.订阅信号,
// 注意:订阅信号,也不能激活信号,只是保存订阅者到数组,必须通过连接,当调用连接,就会一次性调用所有订阅者的sendNext:
[connect.signal subscribeNext:^(id x) {
NSLog(@"订阅者一信号");
}];
[connect.signal subscribeNext:^(id x) {
NSLog(@"订阅者二信号");
}];
// 4.连接,激活信号
[connect connect];
RACObserve简单使用
监听某个对象的某个属性,返回的是信号。
RAC中的KVO大部分都是宏定义,所以代码异常简洁,简单来说就是RACObserve(TARGET, KEYPATH)这种形式,TARGET是监听目标,KEYPATH是要观察的属性值,举个例子,如果UIScrollView滚动则输出success。
响应事件
1.按钮的点击
2. UIAlertView响应
3. UITextField响应
4. 通知监听
5. map用法
小结
今天的第三天知识点先总结这么多,希望大家多多应用,能够在使用中尝试下更多的方法,毕竟我只能起到抛砖引玉的作用,举一反三还需要你们的研究。希望我的小小文字,能带给你些许的帮助,也就是我的初心了。感谢大家对我的支持和私信。支持我就多多留言,添加个关注吧,我会持续更新文章的。