iOS项目搭建学习

前言

本文主要介绍一些优秀好用的第三方库,便于快速搭建项目。(2018.5.4更新,新增Realm)

架构模式

目前主流的架构:MVC/MVP/MVVM/VIPER

到底 MVVM(Model-View-ViewModel)适不适合用于 iOS 开发当中?

早之前 MVVM 就引起热议了,再加上WWDC上的苹果工程师展示的示例代码出现的 view-model ,MVVM便在 iOS 项目中得到实践。

由 MVC 到 MVP 再到 MVVM ,无论是什么架构模式,都是在 MVC 的基础上的优化。

MVVM+RAC(ReactiveCocoa) 为什么需要结合RAC?

RAC是结合了函数式编程和响应式编程的框架,利用RAC处理事件不需要跳到对应方法里。由于iOS开发中没有现成的绑定机制,因此会使用 MVVM+RAC 结合的方式进行框架搭建再好不过了。

至于什么是MVVM,什么是RAC,以及如何使用,https://www.baidu.com/ 你懂的。本文不再叙述。

关于VIPER

直接贴地址啦

https://juejin.im/post/599a43035188252432172045

第三方库的使用

为方便快速开发,下面列出了个人收集的一些第三方库,均可使用 CocoaPods 管理,本文只是简单介绍,不再叙述如何使用。

ReactiveCocoa - 现在拆分为ReactiveObjC和ReactiveSwift

YYKit - 一组功能丰富的 iOS 组件。强烈推荐,下面会进行讲述。

AFNetworking - 网络库

bugly - 面向移动开发者提供专业的 Crash 监控、崩溃分析等质量跟踪服务,快速定位问题。

Aspects - 面向切面编程

Realm - 跨平台数据库,说实话这个相比FMDB更好用,因为我比较懒就不作太多解释,不过坑也是有的,比如NSArray转到RLMArray

IQKeyboardManager - 非常容易解决弹起键盘遮盖输入框的问题

Masonry- 一个轻量级的布局框架, Swift 版本为SnapKit,链式编程思想代表。

MBProgressHUD - HUD提示框

MJRefresh - 下拉上拉刷数据交互效果

UMengAnalytics - 友盟数据统计分析。这个看项目类型和规模而定,比如像电商的项目,需要了解用户购买了哪些产品,比较关注什么类型的产品,根据数据对产品制作相应的营销方案。

YYKit

很多大厂用过都说好,微信、有货等等都用它。

YYKit 出自郭曜源大神,他的github地址 https://github.com/ibireme

从中拆分出以下独立组件:

YYModel— 高性能的 iOS JSON 模型框架。

YYCache— 高性能的 iOS 缓存框架。

YYImage— 功能强大的 iOS 图像框架。

YYWebImage— 高性能的 iOS 异步图像加载框架。

YYText— 功能强大的 iOS 富文本框架。

YYKeyboardManager— iOS 键盘监听管理工具。

YYDispatchQueuePool— iOS 全局并发队列管理工具。

YYAsyncLayer— iOS 异步绘制与显示的工具。

YYCategories— 功能丰富的 Category 类型工具库。

相信很多人使用过 SDWebImage、MJExtension, YYWebImage和 YYModel 的出现,其目的是代替SDWebImage、MJExtension。

YYWebImage 和 SDWebImage 的作用相同,YYModel 和 MJExtension 的作用相同,那么是否决定采用就要考虑的性能和使用两方面,这里就不作比较,网上有很多测评。

参考文章:

YYKit作者博客


另外还有一些第三方库:

GKNavigationBarViewController - 导航栏联动实现

pop - Facebook 开源的实现 Paper 应用平滑动画和转场效果的动画引擎

BlocksKit - block工具包。将很多需要用delegate实现的方法整合成了block的形式

JHChainableAnimations - 链式动画

对于第三方库,还有很多很多,可参考:

iOS 中 常用的第三方库


维护中遇到的问题

对第三方框架封装

在开发中,我们有必要对一些第三方框架根据项目需求进行二次封装。比如说第三方库更新时,时常伴随着一些api更新,如AFNetworking2.0更新到3.0后的差别,若没有进行二次封装这样会导致我们不得不修改大量代码,维护难度增加。

是否使用 Interface Builder?

我们都知道,使用 Interface Builder 可以非常快速地完成UI页面的制作,但是如果在团队开发中,需要对代码进行评审,规范便成为重中之重。对于使用纯代码还是 Interface Builder,各有优缺点,需要视公司情况和需求而定。

第三方框架不再更新

还有一点,第三方开源库很多,一旦不再更新了,维护便成为一个重大的问题,我们需要深入学习其编程思想,正所谓授人以鱼不如授人以渔。

最后说几句

我们在写代码时,都必须遵循高聚合、低耦合的前提,一份漂亮的代码便于日后的维护和扩展。对于有没有必要使用 Swift 开发或者说使用 RAC ,个人认为还是要视公司实际情况和项目需求而定,毕竟学习和维护成本也是一个重要因素。

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

推荐阅读更多精彩内容

  • When I was little, I liked talking back when my parents c...
    葛小婷阅读 303评论 1 2
  • 为什么要学习函数式编程 函数式编程是编程范式中的一种,是一种典型的编程思想和方法。其他的编程范式还包括面向对象编程...
    八汰阅读 19,670评论 15 173
  • 今天儿子快心算考了100分,回来很开心跟我说。我说不错,但是考100分要谢谢谁呢?儿子愣了一下,然后回答:“要谢谢...
    上善若水_4064阅读 94评论 0 0
  • 《写给海淀法院的诗》 人生第一次进法庭是在海淀法院。 第一次那么近地看看到那国徽悬挂在大堂中央: 如此震撼,威严,...
    莺歌儿阅读 488评论 0 2
  • 【百日写作第六期-随笔1组】 4.17号打卡 201-nina 202-夏薪 203-nicole 204-云在高...
    转念馆阅读 185评论 0 0