笔记-架构模式

Contents:

  • MVC封装和解耦
  • MVP架构思路
  • MVVM架构思路

MVC

问题:1. vc代码过于沉重 2. 代码耦合性过高

轻量级vc:只负责建立model和view的依赖关系

通讯方式(model <--> view):通知,代理,block,指针,函数

MVP:面向协议编程

通过代理建立view和model之间的通讯

代理三部曲:写协议,实现,遵循

分类 + 协议 + 类 文件 在编译时map_images中加载进内存

插入:

  1. 自定义代码块:协议声明、代理调用、属性声明等,有利于快捷编码

  2. block外通过__weak typeof(self) weakSelf = self;建立弱引用, 在block中再次__strong typeof(weakSelf) strongSelf = weakSelf;建立强引用的作用:延长生命周期,防止对象已经被释放、超出作用域或者防止block中有耗时操作。

  3. 代码移动快捷键,左移:cmd+[,上移:cmd+opt+[,右移:cmd+],下移:cmd+opt+]

  4. view和vc分离

    -(void)loadView{
      self.view = self.customView;
    }
    

总结:通过代理实现数据和UI的双向绑定。

  • 缺点:需要写代理+实现,代码量增多。
  • 优点:vc解耦,单元测试,代码思路清晰(变化 接口 代理-》产品-》需求)面向接口编程 面向协议 面向需求 --- 需求驱动代码

MVVM

通过block和kvo建立view和model之间的通讯

引入RAC框架(ReactiveObjC)简化kvo代码

总结:网络请求放在viewModel中进行,使用block建立view和model之间的通讯

  • 优点:block可以保存代码块,节省代码量。RAC+MVVM可以做到响应式

RAC核心原理:响应式编程

  • 创建信号
  • 订阅信号
  • 发送信号
  • 销毁信号

资料地址

腾讯课堂-iOS底层进阶-架构模式

你可能感兴趣的:(笔记-架构模式)