搭建基于MVC架构的iOS轻量级框架

描述

对于做开发的我们不知道对框架的重要性理解的有多深。我先谈谈我的感受。我最近因为某些原因换工作,接手了一个别人写的项目,于是地狱般的生活开始了。我大概说一下接手项目的几点让我无法忍受的点。

  • 没有代码规范,写的随心所欲,想空几个空格就空几个,想空几个空格就空几个空格。
  • 没有架构的概念,修改代码找不到对应的代码写在哪里。
  • 基本的MVC的架构模式都不成型,没有model的概念,全是NSDictionary漫天飞,数据传递一条一条的传。
  • table 的 cell 不复用,UI直接写在cellforRow的方法中,直接add到cell上,构建的cell里面空空如也。
  • 平均每个VC里面的代码得有2k+,维护特别不方便,代码很难定位。

大概就列这几条其他的就不再吐槽了,首先我想说的是这样的代码谁接手了能受得了。于是我就决定在开发至于从新搭建一个框架。一方面是自己算是学习成长了,另一方面也把项目重新构建了。

好了回归正题,首先说一下MVC架构吧,这个我觉得的大家都知道,老生常谈的问题了我就不赘述了。有不是很清楚的小伙伴可以点上面的链接了解一下。

接下来我们说一下基于MVC搭建框架相关的东东。这是我参考别的文章中的架构图搭建的项目。

架构图:

架构设计图

架构原则:易读性、易维护性、易扩展性。

搭建目录结构

目录结构

目录如图,从上到下这样搭建App的目录结构。用pod管理第三方的框架,部分进行封装,应对项目中的需求。降低耦合度并且节省了手动配置引入各种库的麻烦。

文件详解:

AppDelegate

1、AppDelegate是应用的代理,应用级的事件都委托它处理,包含启动退出、推送等事件,初始化,以及IM、支付等第三方的回调,这使得AppDelegate内代码庞大,错综复杂,十分不利于阅读和维护,因此新增一个AppDelegate+AppService类别,用来处理生命周期之外的业务,AppDelegate作为事件入口,具体实现直接调用类别里的方法,为AppDelegate减负。

功能模块

2、我搭建的这个是分为首页、科普、消息、我的四个模块。每个模块是按着MVC的架构搭建的,Resource是用来存储当前模块中需要用到的资源。Other是用来存储一些其他的资源,如果你想做分散是网络请求的话就将这文件夹改名为Service。然后将网络请求的文件放在这里。
Manager

3、Manager的定义是全局基础服务,通常使用类方法或者单例来实现,主要包含对应用、用户的管理和服务,例如网络状态监听,广告页应用介绍页,统计单例等;用户快速登录退出操作以及登录状态的获取等。
Utils

4、Utils文件夹内主要包含全局通用工具,来源于对三方框架的二次封装,或是自己写的工具类。
Base

5、Base文件夹用来存放项目的基类,基类作用包含一些定制化的内容,例如页面样式,空数据页面等,使用基类来实现,可以统一控制,利于维护,减少冗余。有写不需要的可以删除掉。
ThridParty

6、放一些第三方的类库,有一些pod中没有的。或者自己自己封装的类,还有的需要我们手动修改里面源码来满足项目需求的类。
Define

7、项目中通用的全局宏定义,我暂时定义了四个可以根据需求添加。
UtilsMacros:通用的工具宏,如:屏幕的宽高,版本的判断,机型的判断,计算nav,tab,statusBar的高度等。
URLMacros:关于项目中接口的宏,正式环境,测试环境的域名,还有个接口的路径。方便统一管理和维护。
FontAndColorMacros:项目中常用的字号,色值,颜色的十六进制转换等,字体的自重定义。
KeyMacros:第三方库的key,和一些通用的关键key,通知的key。
Resource

8、资源文件,系统中通用的一些资源可放在这个文件夹中。但是icon的资源要放在Assets中管理。因为这里面可以对相应的icon做一写处理,比如:设置图片的缩放,可重复复制的区域等。就是 Show SlicingShow OverView
,不了解这块的可以点击直通车☝️。

Pods

9、CocoaPods是iOS项目的依赖管理工具,开发的一般都知道这个我就不过多赘述了。

总结

项目中还有好多细节的内容没有填好后期会不断的完善,大家有啥意见可以尽情的提出来必虚心接受。也可以推荐好用的库给我哦。另外说一下YYKit是非常好用且全面的组件库,遇到问题先去里面找一找,也许会有惊喜哦。后期我会上传demo。欢迎start。

参考文章

http://www.jianshu.com/p/d553096914ff

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342