从零开始搭建一个基于MVVM架构的iOS工程(一):开始之前的各种选择

前言

目前来说,MVVM架构在iOS开发中,已经成长为了一套较为完善于成熟的开发体系,相比于苹果默认的MVC架构,MVVM拥有较好的解耦和可测试能力,依托于RactiveCocoa或RxSwift这类的响应式框架,MVVM可以尽可能的减少代码量的增加,而响应式的思路,又能够给我们在处理一些复杂的事情时一个清晰的思路。所以,何乐而不为呢?

从这篇文章开始,我们将从零开始搭建一个基于MVVM框架的工程,希望能够给想使用或者学习MVVM但是又无从下手的朋友一些帮助。

首先是各种各样的选择。

编程语言:Objective-C or Swift

选择OC还是Swift?这也许有点滑稽。有个前提,如果你的工程是需要支持到iOS7更早系统的话,那么你只能选择OC。但是这种情况很少,目前app store大部分的应用都是从iOS7或iOS8开始支持。

OC的优点在于稳定。作为一门已经非常成熟的开发语言,OC在稳定与社区支持上来说比Swift好很多。而且苹果对OC并没有完全放弃,为了让OC更好的与Swift协作,给OC又添加了不少新特性...

Swift的优点是高效率。Swift在上手和开发上,比OC要轻便很多,并且更加智能。摒弃了OC的一些古老而传统的语法之后,我们可以更佳便捷的

我的建议是,如果你需要开始一个新的工程,那么请毫不犹豫的采用Swift。Swift相比较于OC,拥有更强的开发效率,安全性(如果按照合理规范编码的话)。而且如果关注Github的话就会发现,现在大部分的主流iOS开发框架,都转向了Swift。 Swift后续的升级,也不太会像之前1到2,2到3那么大改动。我相信大部分iOS都能认同的一点是:Swift将会在将来的某一天全面替代OC。

函数式框架

目前iOS用的函数式框架主要是RactiveCocoa和RxSwift,RAC支持OC和Swift两种语言,而RxSwift显然是支持Swift的。其实两者并没有优劣,他们的很多概念是相通的,重点在于你自己觉得适应哪一种。如果你之前在OC的项目中已经用过了RAC,那么你可以继续在Swift里用RAC开发;如果你之前在JAVA下用过RxJava,那么你可以很轻易的转到RxSwift里。

本工程中,我们选择的是RxSwift。

网络库

现在iOS开发中,OC里用的最多的是大名鼎鼎AFNetworking。AFNetworking在3.0之后全面采用NSURLSession替换之前的NSURLConnection,这样在底层大幅提升了网络性能,并且也使得AFNetworking3.0必须在iOS7以上的环境使用,当然这对当前的开发来说,基本没有影响了。

AFNetworking做了啥?都说AFNetworking是轻量级的封装,那么到底轻量在哪里呢。在使用NSURLSession之后,AF的大部分工作放在了请求的封装和解析中,实际操作发送和接收其实已经交给系统去处理了,而AFN则是帮助我们便捷的打包一个请求,便捷的自定义解析。

不过既然开发语言选择了Swift,那么肯定要试一试AFNetworking的Swift版本:Alamofire。Alamofire本质和AFN一样,对URLSession进行了封装,但是采用了函数式的编程来编写和调用。

数据库

随着云概念的普及,越来越多的app不再采用本地数据库了,而且在iOS开发中,有很多轻量级的本地持久化方法来替代数据库,例如UserDefalut,JSON/Plist文件等。数据库的优势在于检索,在这个云检索十分发达的年代,本地数据检索更多的是作为在无网络的情况下的缓存方案。

在需要使用本地数据库的情况下,Sqlite与CoreData是大家常用的两种,事实上也就是这两种种。sqlite是偏向底层的api,在阉割了部分大型数据库的功能后,他提供了一个性能与轻量化兼备的移动应用数据库解决方案。而CoreData是苹果提供的对于Sqlite封装后的框架,他提供了对于数据实体直接操作的功能,从而省去了我们与底层的接触。

我推荐Sqlite而不是Core Data。不仅仅是性能上的问题,sqlite3所支持的sql语句操作,能让我们在很多时候更佳方便的处理数据库事务,而通过封装,我们也能提供和CoreData一样的操作实体的便捷。

其他

我们需要一些其他的工具来给开发提供便捷,这些会在工程后续里用到,最终,我的想法是把这个工程做成一个框架(当然他是需要依赖于很多现有的框架),可以给我们在搭建MVVM工程的过程中提供有效的帮助

Github地址:https://github.com/J219/EndlessWork

如果文章有错误或者不合适的地方,欢迎指正。

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

推荐阅读更多精彩内容