=======================第一天结束====================
• 开启异步做一些事情处理数据,关于tableView的数据模型很复杂的时候可以开启异步线程再去刷新表格。
• RAC的集合:处理数据在子线程中,异步线程处理数据,一般OC的数据类型转为RAC的集合的方式调用 RACSequence 这个类型的属性就可以了;例如 :下面方法可以遍历数组,当打印线程的时候在子线程中,不能在当前线程刷新UI
• • 数组的遍历方式,有两种方式
• 下面是方法1,也是我们常用的
```
[arrays.rac_sequence.signal subscribeNext:^(id _Nullable x) {
//不能更新UI
NSLog(@"%@",[NSThread currentThread]);
NSLog(@"订阅信号");
}];
```
• 下面是方法二:RAC中精简版的
//映射,value就是集合;返回值:需要映射成那个值
```
arrM = [[arrays.rac_sequence map:^id _Nullable(id _Nullable value) {
return [FlagItem itemWithDict:value];
}] array];
//arrM 是用来装模型的数组,里面有我们想要的转换的模型,arrays是一个json串
```
====================数组======================
• • 字典的遍历
```
NSDictionary *dict = @{
@"name":@"wagner",
@"money":@123456
};
//x 代表一个元组,在这里元组可以当做是数组来使用
//RACTupleUnpack 把元组解析成通用的值类型
[dict.rac_sequence.signal subscribeNext:^(id _Nullable x) {
RACTupleUnpack(NSString *key, id value) = x;
NSLog(@"%@ === %@",key,value);
}];
* 输出打印:

```
2018-02-06 09:59:45.931174<0800 RACtest[2076:105197] name===wagner
2018-02-06 09:59:45.932966>0800 RACtest[2076:105197] money===123456
```
* ==================
* 关于 RACMulticastConnection的讲解
```
// RACMulticastConnection :(RACSignal) 用于一个信号的订阅,被订阅多次,为了防止多次调用创建信号中的block,造成负面影响可以使用这个类做处理
@weakify(self);
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
@strongify(self);
//网络数据请求,完毕了传递过去,loadData就是一个简单的网络请求函数
[self loadData:^(id data) {
[subscriber sendNext:data];
}];
return [RACDisposable disposableWithBlock:^{
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-77250-4.html
半张脸然而还是宋