OC知识点归纳

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提高用户体验、性能调优、防止崩溃、节省流量

你可能感兴趣的:(iOS)