去年,Reddit一直在努力改进其iOS应用的性能,同时使其适合更快的迭代周期,改善其测试覆盖率,提高其可扩展性。所有这些都是通过把应用原来的MVC架构改造成Model-View-Presenter(MVP)架构实现的。

\\

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

\\

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

\\

\\

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

\\

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

\\

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

\\

查看英文原文:How Reddit Rewrote Their iOS App to Improve Performance, Modularity, and Testing

Reddit重写其iOS应用,改进性能、模块化和测试相关推荐

  1. 25个增强iOS应用程序性能的提示和技巧 — 中级篇

    本文由破船译自:raywenderlich 转载请注明出处:BeyondVincent的博客 _____________ 在开发iOS应用程序时.让程序具有良好的性能是非常关键的.这也是用户所期望的. ...

  2. [转]25个增强iOS应用程序性能的提示和技巧

    在开发iOS应用程序时,让程序具有良好的性能是非常关键的.这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评.然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的.在开发过程 ...

  3. iOS大型项目之模块化管理

    2019独角兽企业重金招聘Python工程师标准>>> iOS大型项目之模块化管理 待写 转载于:https://my.oschina.net/zhuzhu1223/blog/157 ...

  4. RPC框架性能基本比较测试

    from: http://www.useopen.net/blog/2015/rpc-performance.html RPC框架性能基本比较测试 gRPC是Google最近公布的开源软件,基于最新的 ...

  5. 苹果手机用什么软件测试续航,iOS 14.6负优化:测试发现7款iPhone机型的续航均下滑...

    iOS 14.6负优化:测试发现7款iPhone机型的续航均下滑 2021-06-01 17:24:18 44点赞 53收藏 203评论 上周,iOS 14.6正式版推送,尽管前一版被吐槽的性能下滑( ...

  6. 动力锂离子电池性能及安全测试方面的国内外标准

    概述国内外动力锂离子电池在性能及安全测试方面的标准,从适用范围.测试项内容及严格程度等几个方面进行分析和比较.对国内动力锂离子电池标准体系的构建和发展进行总结和展望. 电池产品的标准,尤其是安全标准是 ...

  7. 数据卡片_VISA消息:关于VCPS 2.1卡片产品的性能和交叉测试的卡片个性化数据的更新...

    我们都知道从2020年6月1日起,所有用于性能和交叉测试的卡片样品都必须采用新的个性化数据用于卡片的个性化. 需要注意的是,Visa已经发布了用于产品性能和交叉测试的卡片个性化数据2.0版本,支持VC ...

  8. 64测试cpu稳定性_SuperPI-圆周率计算与CPU性能与稳定性测试

    Super PI是由东京大学Kanada lab出品的一款专用于检测CPU稳定性的软件,目前最新版本是1.9版,更新于2013年了.Super PI软件通过计算预定的圆周率让CPU高负荷运作,从而达到 ...

  9. 【转载】浏览器测试工具有哪些 浏览器安全性能内核兼容测试工具推荐

    浏览器测试工具有哪些 浏览器安全性能内核兼容测试工具推荐 时间:2019-03-01 15:12  来源:未知   作者:浏览器家园    浏览器测试工具有哪些 浏览器安全性能内核兼容测试工具推荐 好 ...

最新文章

  1. winxp登陆后自动注销
  2. IT软件开发 书籍汇总
  3. 同花顺2020年净利润17亿元增长近一倍,DAU超1400万
  4. static关键字 void和void指针 函数指针
  5. 后天的太阳——马云论坚持
  6. 分区界限必须调整为高于最后一个分区界限_不花一分钱,为SSD硬盘腾空间
  7. android层叠卡片特效_LINE生日贺卡功能升级 快来试试私人生日贺卡 气球祝福特效...
  8. C# DataGridView控件绑定数据后清空数据
  9. 异常记录——使用Mybatis报BindingException
  10. clickhouse kafka引擎入门
  11. Linux RedHat 5.2 构建PostFix邮件服务器
  12. 计算机云教室,希望云教室电脑版
  13. mega linux教程,MegaRAID工具使用详解
  14. modbus主机、从机、虚拟串口调试软件
  15. html回调函数,JS 回调函数
  16. 555低电平出发定时器
  17. 徐思201771010132《面向对象程序设计(java)》第十周学习总结
  18. 工作,到底意味着什么
  19. css文字背景蒙版_使用CSS创建蒙版的背景效果
  20. Hexo中yilia主题使用问题总结

热门文章

  1. 访问数据库的四种方式
  2. extjs资源库管理平台 2013.6.15-电子书库
  3. html5制作webar,实战 | 前端WebAR实现简单版pokemon Go
  4. 屏蔽百家号 -(baijiahao)
  5. 当深度神经网络预测结果不好的时候,可以做的调节有哪些?
  6. 计算机硬件自毁程序,Win7虚拟机去除开机自毁版
  7. 黑马程序员,黑马论坛----黑马.Net8期,就业率98.61%,平均薪水5722元!
  8. HuffmanTree的创建、编码、解码操作
  9. pcDuino: 无线视频监控小车视频及资料
  10. Extjs6.0 常用语法