提高自己应用性能的总结架构篇

简介: OK ,为什么会写这篇文章呢?因为最近接触老一些面试者,总感觉他们认为做应用只是纯粹的搭个界面,殊不知不仅仅如此。 我们从哪几个方面来测试应用的性能呢?这里,因为没用真机来调试所以不会出现fps选项。
OK ,为什么会写这篇文章呢?因为最近接触老一些面试者,总感觉他们认为做应用只是纯粹的搭个界面,殊不知不仅仅如此。
 
我们从哪几个方面来测试应用的性能呢?
316FDE83 DC35 4EDC 9BB6 412AC17F2782
这里,因为没用真机来调试所以不会出现fps选项。下面再来一个
65AB2B29 8E6C 489B BA1A AB7964CEB10A
这里可以测试fps ,提示必须真机来运行,fps为0因为你没用动。
fps接近于60帧,那么你的app是相当的流畅,当然代价是要付出很多很多,然而说这些没有什么卵用,上面看的是翻天覆地的变化,没翻天覆地变化以为你就换换皮肤呢。
 
在没有很多业务开发者,和架构组的IOS app怎么提高性能呢?
 
第一:架构方面
谁说我们app 没有架构了。我们可以参考MVC ,MVVM ,MVP 等一些东西来提炼出我们自己东西。
我们网络请求的数据可以根据每个API来创建一个类,这个类用来接受params ,返回json  
1:比如model 数据层我们可以接收网络请求过来的JOSN 或者XML转化成数据模型来使用,因此这里面除了你的模型属性字段,还应该有一个接收json转化model 的方法。还可以实现你的copy协议方法,以及归档方法方面数据持久化。
2:view 负责视图元素展示。你可以在这里面,
重写布局
D3D8D931 064E 4EF3 B4BD E8479334AB06
 
或者cell高度以及给cell上元素通过传过来的model 赋值。
56BC0348 A24A 4E5F 820B 8D46D6384915
注意红线部分会触发楼上重写布局方法。
3:你甚至可以有一个数据持久化的类,来做model 的缓存,比如头文件可以有一些save model to cache,update  model to cache ,load model from cache, delete model from cache
E6C6BA18 DC7F 4F9B 9D7E 7F8F081E58C2
 
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等逻辑。就是下图
E5EDDCC2 8B67 46DD BBAF 5934AE7003DA
 
也就是下图的结构,view上触发一个业务逻辑比如fetch 数据显示到views。controller 调用API逻辑的fetch数据接口。然后API里面逻辑有获取json 转化model。model的管理cache方面。最后获取到数据把model给view 的setModel 方法,给View展示数据。
  E5EDDCC2 8B67 46DD BBAF 5934AE7003DA
 
 
下篇从网络,缓存方面来介绍,然后数据库,多线程,UI流畅度方面介绍,代码规范,页面布局等介绍。
 
 
 
 

 
相关文章
|
机器学习/深度学习 算法 计算机视觉
2012到2020主要的CNN架构总结
2012到2020主要的CNN架构总结
178 0
2012到2020主要的CNN架构总结
|
Web App开发 存储 缓存
「web浏览器」从一张进程截图说起,总结了一波Chrome架构知识点
本文从一张进程截图说起,总结了一波Chrome架构知识点。
241 0
|
SQL 分布式计算 前端开发
架构组件&查询处理流程--笔记总结 | 学习笔记
快速学习 架构组件&查询处理流程--笔记总结
66 0
|
存储 前端开发 数据管理
淘宝安卓端搜索架构升级总结
推荐语:这篇文章图文并茂地介绍了淘宝搜索滚动容器的技术演进过程,结合代码讲解页面结构划分、数据处理、交互效果,还包含了对逻辑抽象、功能拓展的思考,最后总结了可复用的架构。非常具有实践意义,推荐阅读学习! ——大淘宝技术终端开发工程师 门柳
288 0
淘宝安卓端搜索架构升级总结
|
大数据 API 微服务
又一神作!Alibaba“M8级”大牛总结微服务与事件驱动架构启蒙手册
首先什么是事件驱动型微服务?(书中摘要) 微服务和微服务类型的架构已经存在很多年了,它们有许多不同的形式和名字。面向服务的架构(service-oriented architecture,SOA)通常由多个相互直接同步通信的微服务构成。消息传递架构使用可被消费的事件在微服务之间进行异步通信。基于事件的通信当然不算新颖,但大规模并实时地处理大数据集是新的需求,而这要求对旧的架构类型进行改进。
又一神作!Alibaba“M8级”大牛总结微服务与事件驱动架构启蒙手册
|
监控 Cloud Native Java
《JAVA生态圈技术总结》之 微服务架构蓝图总览(下)
《JAVA生态圈技术总结》之 微服务架构蓝图总览(下)
《JAVA生态圈技术总结》之 微服务架构蓝图总览(下)
|
JSON 运维 负载均衡
《JAVA生态圈技术总结》之 微服务架构蓝图总览(上)
《JAVA生态圈技术总结》之 微服务架构蓝图总览(上)
《JAVA生态圈技术总结》之 微服务架构蓝图总览(上)
|
存储 缓存 前端开发
微服务与领域驱动设计,架构实践总结
如果软件系统存在持续的迭代周期,那么其中业务、技术、架构的复杂性都会直线拉升,其相应的开发难度也会提高,随之而来的压力会持续在开发和测试之间来回横跳。
280 0
微服务与领域驱动设计,架构实践总结
|
监控 Kubernetes Cloud Native
《Java生态圈技术总结》之 微服务架构蓝图总览
微服务是一种架构风格,将单体应用划分成一组小的服务,尽量符合单一职责的原则,使得服务之间相互协作,实现业务功能; 每个服务都运行在独立的进程、虚拟机、容器、服务器中,服务之间采用轻量级的通信机制(HTTP/JSON)进行协作; 每个服务围绕各自的业务能力进行构建,并且能够通过自动化机制独立地部署,相互之间无部署依赖;
|
资源调度 Kubernetes 网络协议
深入浅出总结Flink运行时架构。
Flink 运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作:作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher)。因为 Flink 是用 Java 和 Scala 实现的,所以所有组件都会运行在Java 虚拟机上。接下来对各个组件的功能进行简单介绍i。
深入浅出总结Flink运行时架构。

热门文章

最新文章