1 函数式编程,链式编程定义
-
准备工作:自定义一个基类重写description 打印model 的时候能打印所有的属性
-
OC 中应用函数式编程,方法后面拼接()要能继续执行下去,所有要有返回值,使用block,返回值式自己。
-
方法的实现:
-
直接返回return,简写如下:
2.swift是适合函数式编程 ,方法后面带有(),如果需要执行下去,加上返回值是自己的就可以链式编程下去。
-
形式
-
实现
3.响应式编程RAC - 集成注意点
-
选择框架
- 纯 swift 项目,继续使用 ReactiveCocoa 。但是 RAC 依赖于 ReactiveSwift ,等于你引入了两个库。
- 纯 OC 项目,需要使用 ReactiveObjC 。这个库里面包含原来 RAC 2的全部代码。
- 项目是 swift 和 OC 混编,需要同时引用 ReactiveCocoa 和 ReactiveObjCBridge 。但是 ReactiveObjCBridge 依赖于 ReactiveObjC ,所以你就等于引入了 4 个库。
-
集成环境配置
-
如果项目不是纯OC项目,那么编辑Podfile文件添加了pod 'ReactiveCocoa', '~> 5.0.3'以后一定别忘了添加一行use_frameworks!用于生成动态链接库。
-
Xcode8导入时因为Swift2.3与Swift3.0的关系,导入后,无法成功编译程序,工程会弹出一个选择框,最好选第一个later,跳过swift编译。之后修改pod项目的Bulid Settings里搜swift_version之后把Swift Language Version变成3.0在使用command+shift+k进行clear下项目就OK了。
-
4.RAC应用
-
iOS中的事件
- 目标(方法),代理,通知,KVO,时钟,网络
rac_signalForControlEventstargetrac_signalForSelector代理rac_addObserverForName通知rac_valuesAndChangesForKeyPathKVO
-
创建信号
RACSignalcreateSignal -
信号,
RACSignal -
状态:
- 热信号:有订阅者,一旦订阅信息,就会执行
- 冷信号 只是定义,没有订阅,只是信号对象,不会工作
5.订阅者: 视图控制器需要知道加载数据的情况
-
订阅三种类型,next ID类型,error:出错处理,completion表示信号完成
-
加载过后订阅
6.RAC系统学习
- ReactiveCocoa常见类有哪些?
- RACSignal:表示有数据传递的时候
- RACDisposable:取消订阅信号
- RACSubscriber:订阅者,发送数据