1、熟悉组件化架构,MVP,MVVM,MVC,Router
MVP模式:Model-View——prestenter
MVC模式:Model-View-Controller
MVVM + RAC模式:RAC提供了统一的数据流动的方式,其扮演传递数据变化信号的角色。
RAC的主要作用:
一、作用于View和ViewModel之间
RAC的主要切入点就是View和ViewModel之间,当ViewModel中的数据因用户操作、网络等原因发生了变化时,View能够马上动态的更新数据,这就是所谓的数据绑定。
二、对网络操作的封装,即RACComand
在引入RAC的项目中,经常把网络请求封装成Command,以供View层通过ViewModel触发网络访问,当然,这也急自然引入了对Command的相关信号的订阅。RACCommand的逻辑与RACSingal不太相同,刚入门的时候这里容易踩坑。
三、作用于Model与ViewModel之间
有时候我们也会在Model与ViewModel进行数据绑定,以当独立运作的Model层发生改变时,及时的通知ViewModel,然后再通过View与ViewModel的绑定来刷新UI。以前我们往往通过Notification的形式来实现Model更新时,通知Controller来更新UI,在这里,RAC给出了统一的数据更新方式。
2、APNS、UI布局、数据库、网络
3、runtime、runloop
runtime(简称运行时),是一套纯C的API。而OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。
对于C语言,函数的调用在编译的时候会决定调用哪个函数。
OC的函数调用成为消息发送,属于动态调用过程。在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用
事实证明:在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错,只有当运行的时候才会报错,这是因为OC是运行时动态调用的,而C语言调用未实现的函数就会报错
runtime消息机制
消息机制原理:对象根据方法编号SEL去映射表查找对应的方法实现。每一个OC的方法,底层必然有一个与之对应的runtime方法
一、OC在向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象对应的类或其父类中查找方法
二、注册方法编号
三、根据方法编号去查找对应方法
四、找到只是最终函数实现地址,根据地址去方法区调用对应函数
runtime先从缓存中找,再从子类或者父类中寻找,在向方法列表中找,最后还是找不到,就执行消息转发操作
补充:
一个objc对象的isa的指针指向什么?有什么作用?
每一个对象内部都有一个isa指针,这个指针是指向它的真实类型,根据这个指针就能知道将来调用哪个类的方法
runtime常见作用
- 动态交换两个方法的实现
- 动态添加属性
- 实现字典转模型的自动转换
- 动态添加方法
- 拦截并替换方法
4、对App提高用户体验、性能调优、防止崩溃、节省流量