前言
本文主要介绍一些优秀好用的第三方库,便于快速搭建项目。(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 的作用相同,那么是否决定采用就要考虑的性能和使用两方面,这里就不作比较,网上有很多测评。
参考文章:
另外还有一些第三方库:
GKNavigationBarViewController - 导航栏联动实现
pop - Facebook 开源的实现 Paper 应用平滑动画和转场效果的动画引擎
BlocksKit - block工具包。将很多需要用delegate实现的方法整合成了block的形式
JHChainableAnimations - 链式动画
对于第三方库,还有很多很多,可参考:
维护中遇到的问题
对第三方框架封装
在开发中,我们有必要对一些第三方框架根据项目需求进行二次封装。比如说第三方库更新时,时常伴随着一些api更新,如AFNetworking2.0更新到3.0后的差别,若没有进行二次封装这样会导致我们不得不修改大量代码,维护难度增加。
是否使用 Interface Builder?
我们都知道,使用 Interface Builder 可以非常快速地完成UI页面的制作,但是如果在团队开发中,需要对代码进行评审,规范便成为重中之重。对于使用纯代码还是 Interface Builder,各有优缺点,需要视公司情况和需求而定。
第三方框架不再更新
还有一点,第三方开源库很多,一旦不再更新了,维护便成为一个重大的问题,我们需要深入学习其编程思想,正所谓授人以鱼不如授人以渔。
最后说几句
我们在写代码时,都必须遵循高聚合、低耦合的前提,一份漂亮的代码便于日后的维护和扩展。对于有没有必要使用 Swift 开发或者说使用 RAC ,个人认为还是要视公司实际情况和项目需求而定,毕竟学习和维护成本也是一个重要因素。