开发者社区> 人魔七七> 正文

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

简介: 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流畅度方面介绍,代码规范,页面布局等介绍。
 
 
 
 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java性能优化之编程技巧总结
1、慎用异常 在Java软件开发中,经常使用 try-catch 进行错误捕获,但是,try-catch 语句对系统性能而言是非常糟糕的。
923 0
性能魔方:大规模企业该如何应对应用性能挑战
在7月7日的云栖TechDay活动上,来自性能魔方的朱渝苏给大家分享了《大规模企业应用性能管理实践》话题。朱渝苏从应用性能的挑战和应对策略、大型互联网公司的优化实践、性能魔方优化实践与案例三个部分展开了本次分享。分享最后,他对现场观众所提出的问题也做出了精彩的回答。
3456 0
## Spark作业性能调优总结
Spark作业性能调优总结 前段时间在集群上运行Spark作业,但是发现作业运行到某个stage之后就卡住了,之后也不再有日志输出。于是开始着手对作业进行调优,下面是遇到的问题和解决过程: 运行时错误 Out Of Memory: Java heap space / GC overhead limit exceeded 使用yarn logs -applicationId=appliation_xxx_xxx 命令查看Yarn收集的各个Executor的日志。
3516 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19828 0
应用性能管理(APM, Application Performance Management)总结
当下成熟的互联网公司都建立有从基础设施到应用程序的全方位监控系统,力求及时发现故障进行处理并为优化程序提供性能数据支持,降低整体运维成本。国内外商业的APM有Compuware、iMaster、博睿Bonree、听云、New Relic、云智慧、OneAPM、AppDyn、Amics等。
9859 0
js中setTimeout和setInterval性能详解总结
在写H5游戏时经常需要使用定时刷新页面实现动画效果,比较常用即setTimeout()以及setInterval() setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则是在每隔指定的毫秒数循环调用函数或表达式,直到clearInterval把它清除。
5870 0
+关注
人魔七七
人魔七七 关注移动端领域
191
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载