OK ,为何会写这篇文章呢?由于最近接触老一些面试者,总感受他们认为作应用只是纯粹的搭个界面,却不知不单单如此。
咱们从哪几个方面来测试应用的性能呢?
这里,由于没用真机来调试因此不会出现fps选项。下面再来一个
这里能够测试fps ,提示必须真机来运行,fps为0由于你没用动。
fps接近于60帧,那么你的app是至关的流畅,固然代价是要付出不少不少,然而说这些没有什么卵用,上面看的是翻天覆地的变化,没翻天覆地变化觉得你就换换皮肤呢。
在没有不少业务开发者,和架构组的IOS app怎么提升性能呢?
第一:架构方面
谁说咱们app 没有架构了。咱们能够参考MVC ,MVVM ,MVP 等一些东西来提炼出咱们本身东西。
咱们网络请求的数据能够根据每一个API来建立一个类,这个类用来接受params ,返回json
1:好比model 数据层咱们能够接收网络请求过来的JOSN 或者XML转化成数据模型来使用,所以这里面除了你的模型属性字段,还应该有一个接收json转化model 的方法。还能够实现你的copy协议方法,以及归档方法方面数据持久化。
2:view 负责视图元素展现。你能够在这里面,
重写布局
或者cell高度以及给cell上元素经过传过来的model 赋值。
注意红线部分会触发楼上重写布局方法。
3:你甚至能够有一个数据持久化的类,来作model 的缓存,好比头文件能够有一些save model to cache,update model to cache ,load model from cache, delete model from cache
4:控制器里作些什么呢
#import Controllers
#import Models
#import Views
#import Cells
上面导入的头文件必须分组织隔开
#pragma mark - Constants Define
一些cell 的标识符,常量定义
#pragma mark - Properties Getter And Setter
get set 方法实现 主要是get 方法能够在这里面作懒加载,须要时候再建立,在内存等方面获得优化,我不少几乎全部的建立东西都是懒加载,还在抱怨内存和跳转速度吗,不妨一试
#pragma mark - Controller Life Cycle
控制器生命周期
- (
void
)viewDidLoad {
[
super
viewDidLoad];
// Do any additional setup after loading the view.
}
- (
void
)didReceiveMemoryWarning {
[
super
didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Setup
设置界面UI 等
#pragma mark - Actions
view上触发的事件让控制器通知model等
下面就是不少协议方法
#pragma mark - UITableViewDelegate And UITableViewDataSource
#pragma mark - UICollectionViewDelegate And UICollectionViewDataSource
5:咱们须要一个类来作一些业务逻辑的东西
好比
- (NSArray*)getAlbums;面试
- (void)addAlbum:(Album*)album atIndex:(int)index;数据库
- (void)deleteAlbumAtIndex:(int)index;
这里面会导入网络请求逻辑,数据存储逻辑,转化model逻辑。咱们在控制器调用这个类的头文件API方法能够良好隔离model ,网络请求,model ,cache等逻辑。就是下图
也就是下图的结构,view上触发一个业务逻辑好比fetch 数据显示到views。controller 调用API逻辑的fetch数据接口。而后API里面逻辑有获取json 转化model。model的管理cache方面。最后获取到数据把model给view 的setModel 方法,给View展现数据。
下篇从网络,缓存方面来介绍,而后数据库,多线程,UI流畅度方面介绍,代码规范,页面布局等介绍。