iOS性能优化和设计模式

你在项目中是怎么优化内存的?

  • 减少类的创建,多复用
  • 尽量用轻量级的对象
  • 图片不能过大,尽可能少用图片
  • 少用定时器
  • 控制线程的最大并发数量
  • 减少、压缩网络数据

优化你是从哪几方面着手?

  • CPUGPU
  • I/O操作
  • 网络
  • 定位

列表卡顿的原因可能有哪些?你平时是怎么优化的?

  • 使用MVVM模式进行开发,ViewModel在子线程获取Model的同时也将视图的UI属性都提前计算好,再回到主线程刷新,尽可能减少在滚动的时候的计算操作
  • 图片圆角不使用layer.masksToBounds = YESlayer.cornerRadius大于0的方式设置,通过CoreGraphics绘制裁剪圆角,或者叫美工提供圆角图片
  • 要使用阴影就必须也设置layer.shadowPath

遇到tableView卡顿嘛?会造成卡顿的原因大致有哪些?

  • 高度并没有提前算好、离屏渲染、视图结构过于复杂、视图的UI属性修改频繁、透明的视图过多、图片过大

讲讲 MVC、MVVM、MVP,以及你在项目里具体是怎么写的?

  • MVC:将View内部的细节封装起来了,View依赖Model,展示的内容由Model决定,Controller负责控制View展示哪个Model的内容
  • MVVMViewModel互不依赖,都经由ViewModel进行联动,ViewModel负责Model的加载和View需要的其他数据的处理,并将其
  • MVP:跟MVC类似,只是把Controller的工作交付给Presenter,并且View不依赖Model,由Presenter控制Model的内容数据展示在哪个View
MVC-变种.jpg
MVC-Apple版.jpg
MVP.jpg
MVVM.jpg
  1. 你自己用过哪些设计模式?
    • MVCMVVM
设计模式的分类.jpg
  1. 一般开始做一个项目,你的架构是如何思考的?
    • 分层设计,分别以界面层、业务层、网络层、数据层共四个大的层面划分,再按功能的不同进行模块化开发
分层设计.jpg

你可能感兴趣的:(iOS性能优化和设计模式)