你在项目中是怎么优化内存的?
- 减少类的创建,多复用
- 尽量用轻量级的对象
- 图片不能过大,尽可能少用图片
- 少用定时器
- 控制线程的最大并发数量
- 减少、压缩网络数据
优化你是从哪几方面着手?
-
CPU和GPU -
I/O操作 - 网络
- 定位
列表卡顿的原因可能有哪些?你平时是怎么优化的?
- 使用
MVVM模式进行开发,ViewModel在子线程获取Model的同时也将视图的UI属性都提前计算好,再回到主线程刷新,尽可能减少在滚动的时候的计算操作 - 图片圆角不使用
layer.masksToBounds = YES、layer.cornerRadius大于0的方式设置,通过CoreGraphics绘制裁剪圆角,或者叫美工提供圆角图片 - 要使用阴影就必须也设置
layer.shadowPath
遇到tableView卡顿嘛?会造成卡顿的原因大致有哪些?
- 高度并没有提前算好、离屏渲染、视图结构过于复杂、视图的UI属性修改频繁、透明的视图过多、图片过大
讲讲 MVC、MVVM、MVP,以及你在项目里具体是怎么写的?
-
MVC:将View内部的细节封装起来了,View依赖Model,展示的内容由Model决定,Controller负责控制View展示哪个Model的内容 -
MVVM:View和Model互不依赖,都经由ViewModel进行联动,ViewModel负责Model的加载和View需要的其他数据的处理,并将其 -
MVP:跟MVC类似,只是把Controller的工作交付给Presenter,并且View不依赖Model,由Presenter控制Model的内容数据展示在哪个View上

MVC-变种.jpg

MVC-Apple版.jpg

MVP.jpg

MVVM.jpg
- 你自己用过哪些设计模式?
-
MVC、MVVM
-

设计模式的分类.jpg
- 一般开始做一个项目,你的架构是如何思考的?
- 分层设计,分别以界面层、业务层、网络层、数据层共四个大的层面划分,再按功能的不同进行模块化开发

分层设计.jpg