记录下个人从事iOS开发过程中,使用过的程序框架,谈谈个人的理解。
前言
回顾最近三年,我主要从事iOS前端开发工作。一个一无所知的摸石头过河,慢慢在前端开发的道路上寻找、探索。之前我是做嵌入式开发的,转做iOS前端开发可以说是一个幸运的意外。因为业务需要,看了两个星期的斯坦福大学大学iOS公开课,就开始了我的踩坑、脱坑之旅。这里就聊一聊近3年来iOS前端开发使用的框架吧。
MVC
第一次接触MVC这个框架,是在大三的一门《J2EE》教材的最后一章,当时还沉浸在JSP+Servlet各种组合中,提到这个的时候,因为是接触的第一个框架,所以印象特别深刻,直到后来实习的时候使用Struct框架做了一个管理系统,才算真正
的理解。后来在斯坦福iOS视频教程中又一次的遇到她。
概念不用再赘述,当时主要是使用Xib+ObjC开发。鉴于应用本身的弱Model,当时的整个应用看起来都是ViewController。文件组织特别的乱,结果就是很不好维护。在经历了iOS5~iOS10系统的适配后,在代码复用方面,简直是个噩梦!在这里就主要记录下使用她的过程中遇到的问题吧
- 基础知识不熟练。
- 零基础的代码编写,主要精力放在了逻辑编写上,很少关注代码结构。
- 很多组件使用不规范。虽然UI上达到了效果。
- 第三方库的使用。直接拖拽、修改代码。
- 系统不熟悉,等。
以上很多因素,最终导致了App的ViewController特别臃肿,且页面间组织关系不好梳理,代码复用等这里真心无力再吐槽了。期间界面组织方式有StoryBoard+ObjC
、Xib+ObjC
和ObjC纯代码
,开发的应用包括《效率助手》、《知识库》、《因泰在线》,使用该框架过程中对其结构进行了调整,和后边的MVVM框架思想类似。
MVVM
对于这个框架,感觉是先使用后,才了解到其概念的。先使用的主要原因是MVC的Controller太过庞大,且维护起来很不容易。很多逻辑感觉不应该放到控制器中,所以将Controller进行了分割,使用起来确实解决了代码复用问题,程序结构变得清晰起来。使用该框架开发的应用包括《数据采集》、《路桥在线》等。因为在查询框架资料时,使用的和这个不谋而合。所以这个框架使用的周期相对较短。
自定义框架
之前主要从事嵌入式开发,对某个车载导航产品的结构比较熟悉,所以就仿造她自己编写了一套框架,主要为了解决代码分类。层级结构包括:界面展示层HMI、交互层PF、数据传输层HMI-Core、核心功能层FunctionCore、数据持有层Model、共同层Common等,功能模块横向纵向通过Symbol(Event或者Notification)的形式实现,通过反射等机制来协调各功能。
MVVM变种
这个(自己定的名字)是主要使用的,一个类似MVMCV但严格上来说不属于MVMCV框架的框架。与之的主要区别是View-Model的组织,我目前在VM(View-Model)中放置了部分业务逻辑,少量的业务逻辑还是在C(Controller)中。主要原因是目前iOS前端移动应用由我一人进行承担,部分业务逻辑放在Controller中一定程度上可以加快开发速度(应该是错觉,反正我说了算)。这里主要提一点就是 pod 的使用,她解决了很大的APP适配问题。
MVMCV
目前使用这个框架开发过聊天功能界面。感觉多人合作的时候这个框架还是非常清晰的;从工作分配到代码编写、问题调查,实在是找不出拒绝她的理由。
总结
虽然目前主要使用MVVM的一种变种形式,将View-Model中的逻辑进行了初步的分类。但后续过程中,我还是会向MVMCV结构变更的,因为现在已经尝到了MVMCV结构的甜头。