- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
iOS大型项目解耦方案有难度?BeeHive设计优化来帮助
iOS大型项目解耦方案有难度?BeeHive设计优化来帮助本文章来自于阿里云云栖社区摘要:?在2017年在线技术峰会——阿里开源项目最佳实践上,来自天猫的戴鹏带来了BeeHive关于iOS大型项目解耦方案的分享。他从多人开发的问题介绍了业界的三种模块方案,将传统Init与BeeHive Module进行了比较,对BeeHive的架构进行了分析,并对Module Manager和Module的实现进行了详细介绍。在2017年在线技术峰会——阿里开源项目最佳实践上,来自天猫的戴鹏带来了BeeHive关于iOS大型项目解耦方案的分享。他从多人开发的问题介绍了业界的三种模块方案,将传统Init与BeeHive?Module进行了比较,对BeeHive的架构进行了分析,并对Module Manager和Module的实现进行了详细介绍。?以下内容根据直播视频整理而成。?视频回顾:点击进入(原文链接:/edu/lesson/play/639?spm=5176.100239.blogcont71685.13.zmAply)Pdf下载:点击进入?在iOS大型项目中如何抽丝剥茧把对应的需要优化的地方进行优化、多人协作开发中如何避免冲突?本文为你详细解答。背景?2015年上半年,开始参与天猫iPad开发,负责的主要内容包括我的天猫以及首页一些程序框架性的东西。2015年下半年之后,开始参与天猫iPhone开发,主要负责直播项目。多人开发模式下遇到的问题在多人开发模式中涉及到了沟通交流以及互相合作的问题。在代码依赖层面,功能调用比较繁琐,功能之间互相依赖,底层功能反向依赖上层业务。在协同开发层面,合并冲突,费时费力,合作开发、接口不稳定,频繁更新接口。在量化分析层面,代码耦合难以分析性能、难以做单元测试。在性能优化层面,每个库侵入App生命周期,难区分库初始化必要性,导致启动卡顿。恶劣的开发环境像面条式的逻辑文化。老练的开发人员也会畏手畏脚,因为整个迭代周期流程中包含了开发过程以及修bug过程,如果在一个耦合严重的情况下做这些操作的话,可能造成更多bug的引入。整个工程如果没有做到合理的分类的话,其实业务和基础逻辑就会交织缠绕在一起,可维护性降低。多人开发的小目标在开发过程中,为了支持业务的快速发展,并没有认真思考整个应用该具备哪些特点。而所有的应用必须具备以下三个特点:维护性,支持多人持续开发;可用性,有良好性能及功能完备;可分析性,支持优化、用户行为分析。业界的模块方案?URL?Router可以参考开源界比较成熟的方案JR?Route,把每一个模块以一个URL的形式作为独立存在的界限范围。URL?Router需要在内存中维护一张URL表作为key来实现对应的push或者唤起对应的模块。它在传递参数过程中不能传递类似于对象这样的数据,只能传递String这类的数据。Target?Action也是基于苹果原生的Runtime的优势,其优势很大在于可以做到无需加载内存,并且在调用中没有相关的依赖。在调用中的缺陷在于只有在运行池中才可以知道对应的组件是否存在,若不存在会造成对应的Crash。Protocol?class是利用原始class以及对应的Protocol用到的Service?interface去进行实现以及接口的分离,让大部分的业务方只需要基于Protocol的interface进行调用。其过程中会涉及到内存占用的问题。BeeHive实践之路?BeeHive相当于一个蜂巢,我们希望每个模块都像六角形的蜂窝可以独立存在,可以同时对外有很好的接口。一个App的层次关系?iOS分层有几种层次:核心的Core?OS层、其上的Core?Services和Media?Layer、Cocoa?Touch对于开发者人员来说是比较黑盒的东西。而一个个独立的App也类似于插件的形式插在系统当中。最上层的应用生命周期是管控平台。传统Init与BeeHiveModule?传统的Init有三个层次,此过程中Init没法做到很好的区分,并且其中有些比较耗时的操作是没有必要的。对应的BeeHive?Module是把一个个module进行了细粒度的拆分,通过Module?Manager的形式将整个应用的生命周期进行了发放,每个module在自己的回调过程中只需要遵循module?protocol就可以感应到整个应用的生命周期,在不同场景下做对应的程序响应。Module Manager?Module Manager除了拆分应用的生命周期还扩充了生命周期。从上下图对比当中我们可以知道,BeeHive中加了三块流程,ModuleSetup、ModuleInit、ModuleSplash,这三个流程对于大部分模块的初始化来说已经足够用了。在这个过程中,还支持了自定义的ModuleE
您可能关注的文档
最近下载
- 湖南省长沙市2025届高三新高考适应性考试语文试题及答案解析.pdf VIP
- 正方体的11种展开图--A4直接打印版.docx VIP
- 《商品学》(第2版)1-11章题库章节练习题答案全书测试题参考答案含原题.pdf VIP
- 23ZG210预应力高强混凝土空心方桩.pdf
- 心理咨询师考试发展心理学知识习题.docx VIP
- 02S515排水检查井图集 .docx VIP
- (高清版)DG∕TJ 08-2165-2015 建设项目交通影响评价技术标准.docx VIP
- 3.3.5患者参与医疗安全(达B档).doc VIP
- 道口开设施工合同5篇.docx VIP
- 九一八国旗下演讲稿《勿忘国耻吾辈自强》.docx VIP
文档评论(0)