博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Reddit重写其iOS应用,改进性能、模块化和测试
阅读量:6360 次
发布时间:2019-06-23

本文共 800 字,大约阅读时间需要 2 分钟。

去年,Reddit一直在努力改进其的性能,同时使其适合更快的迭代周期,改善其测试覆盖率,提高其可扩展性。所有这些都是通过实现的。

\\

原来的MVC设计其中一个主要的问题是容易导致,这是由于。其中一个明显的影响是滚动性能退化,从60fps降到了45-55fps,Reddit工程师Andrew Rohn这样写道。视图-控制器的耦合导致任何改进视图实现的尝试都需要复制数千行的控制器代码。因此,Reddit工程师开始重写其应用的某些部分,迁移到设计。

\\

虽然与MVC差别不大,但MVP实现了展示层和业务逻辑的更好隔离,如下图所示。

\\

23255e26c5ef76434675199bfcd88810.jpg

\\

按照这个思路,Reddit工程师把任何非视图逻辑从UIViewController中移除,并放到只负责视图-模型交互的Presenter类中。这样,UIViewController就负责诸如处理用户输入、设置视图、绑定及管理视图生命周期这样的任务。Presenter则关注与它本身有关的数据获取、转换以及展示。MVP的关键是,Presenter不会直接访问视图对象,而是通过一个接口访问。

\\

迁移到MVP改进了代码的模块化和可重用性,使得业务逻辑可以独立于视图进行测试。与MVC相比,MVP还有其他的好处,Rohn重点指出,它更适合组合而不是继承,因为Presenter是一个从视图控制器分离出的组件,更容易重用或用不同的实现替换。最重要的是,MVP促成了视图层实现的重写,借助的多线程解决了滚动性能问题。Rohn解释说,使用Texture的最大障碍是处理状态访问同步,这需要在Presenter忙于渲染输入UI时锁定状态。

\\

MVP只是众多MVC迁移选项中的一个。如果你对iOS应用架构的多种可选方法的比较分析感兴趣的话,可以读下Chris Eidhof、Matt Gallagher、Florian Kugler合著的。

\\

查看英文原文:

转载地址:http://uabma.baihongyu.com/

你可能感兴趣的文章
银行卡的三个磁道
查看>>
OpenSSL 提取 pfx 数字证书公钥与私钥
查看>>
Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】
查看>>
CollapsingToolbarLayoutDemo【可折叠式标题栏,顺便带有CardView卡片式布局】
查看>>
CentOS7.4安装配置mysql5.7 TAR免安装版
查看>>
解决IE二级链接无法打开故障
查看>>
Windows phone应用开发[16]-数据加密
查看>>
SQL Server 迁移数据到MySQL
查看>>
通用数据压缩算法简介
查看>>
The next Industry Standard in IT Monitoring, a python implementation Nagios like tool --- Shinken
查看>>
(笔记)找工作,该怎么进补
查看>>
div的显示和隐藏以及点击图标的更改
查看>>
(轉貼) Ubuntu將在ARM平台netbook上現身 (SOC) (News) (Linux) (Ubuntu)
查看>>
SQL注入测试工具:Pangolin(穿山甲)
查看>>
在html 的img属性里只显示图片的部分区域(矩形,给出开始点和结束点),其他部份不显示,也不要拉伸...
查看>>
程序员第二定律:量化管理在程序员身上永无可能
查看>>
ubuntu一些脚本的执行顺序
查看>>
类继承的结构
查看>>
Intel 被 ARM 逼急了
查看>>
testng + reportng 测试结果邮件发送
查看>>