前言
本文主要介紹一些優(yōu)秀好用的第三方庫成黄,便于快速搭建項(xiàng)目耙蔑。(2018.5.4更新,新增Realm)
架構(gòu)模式
目前主流的架構(gòu):MVC/MVP/MVVM/VIPER
到底 MVVM(Model-View-ViewModel)適不適合用于 iOS 開發(fā)當(dāng)中奕枢?
早之前 MVVM 就引起熱議了腾务,再加上WWDC上的蘋果工程師展示的示例代碼出現(xiàn)的 view-model 捂龄,MVVM便在 iOS 項(xiàng)目中得到實(shí)踐揩慕。
由 MVC 到 MVP 再到 MVVM 漆诽,無論是什么架構(gòu)模式侮攀,都是在 MVC 的基礎(chǔ)上的優(yōu)化。
MVVM+RAC(ReactiveCocoa)?為什么需要結(jié)合RAC厢拭?
RAC是結(jié)合了函數(shù)式編程和響應(yīng)式編程的框架兰英,利用RAC處理事件不需要跳到對應(yīng)方法里。由于iOS開發(fā)中沒有現(xiàn)成的綁定機(jī)制供鸠,因此會使用 MVVM+RAC 結(jié)合的方式進(jìn)行框架搭建再好不過了畦贸。
至于什么是MVVM,什么是RAC楞捂,以及如何使用薄坏,https://www.baidu.com/?你懂的。本文不再敘述寨闹。
關(guān)于VIPER
直接貼地址啦
https://juejin.im/post/599a43035188252432172045
第三方庫的使用
為方便快速開發(fā)胶坠,下面列出了個人收集的一些第三方庫,均可使用?CocoaPods?管理繁堡,本文只是簡單介紹沈善,不再敘述如何使用。
ReactiveCocoa - 現(xiàn)在拆分為ReactiveObjC和ReactiveSwift
YYKit - 一組功能豐富的 iOS 組件帖蔓。強(qiáng)烈推薦,下面會進(jìn)行講述瞳脓。
AFNetworking - 網(wǎng)絡(luò)庫
bugly - 面向移動開發(fā)者提供專業(yè)的 Crash 監(jiān)控塑娇、崩潰分析等質(zhì)量跟蹤服務(wù),快速定位問題劫侧。
Aspects - 面向切面編程
Realm - 跨平臺數(shù)據(jù)庫埋酬,說實(shí)話這個相比FMDB更好用,因?yàn)槲冶容^懶就不作太多解釋烧栋,不過坑也是有的写妥,比如NSArray轉(zhuǎn)到RLMArray
IQKeyboardManager - 非常容易解決彈起鍵盤遮蓋輸入框的問題
Masonry- 一個輕量級的布局框架, Swift 版本為SnapKit,鏈?zhǔn)骄幊趟枷氪怼?/p>
MBProgressHUD - HUD提示框
MJRefresh - 下拉上拉刷數(shù)據(jù)交互效果
UMengAnalytics - 友盟數(shù)據(jù)統(tǒng)計分析审姓。這個看項(xiàng)目類型和規(guī)模而定珍特,比如像電商的項(xiàng)目,需要了解用戶購買了哪些產(chǎn)品魔吐,比較關(guān)注什么類型的產(chǎn)品扎筒,根據(jù)數(shù)據(jù)對產(chǎn)品制作相應(yīng)的營銷方案莱找。
YYKit
很多大廠用過都說好,微信嗜桌、有貨等等都用它奥溺。
YYKit?出自郭曜源大神,他的github地址 https://github.com/ibireme
從中拆分出以下獨(dú)立組件:
YYModel— 高性能的 iOS JSON 模型框架骨宠。
YYCache— 高性能的 iOS 緩存框架浮定。
YYImage— 功能強(qiáng)大的 iOS 圖像框架。
YYWebImage— 高性能的 iOS 異步圖像加載框架层亿。
YYText— 功能強(qiáng)大的 iOS 富文本框架桦卒。
YYKeyboardManager— iOS 鍵盤監(jiān)聽管理工具。
YYDispatchQueuePool— iOS 全局并發(fā)隊列管理工具棕所。
YYAsyncLayer— iOS 異步繪制與顯示的工具闸盔。
YYCategories— 功能豐富的 Category 類型工具庫。
相信很多人使用過 SDWebImage琳省、MJExtension迎吵, YYWebImage和 YYModel 的出現(xiàn),其目的是代替SDWebImage针贬、MJExtension击费。
YYWebImage 和 SDWebImage 的作用相同,YYModel 和 MJExtension 的作用相同桦他,那么是否決定采用就要考慮的性能和使用兩方面蔫巩,這里就不作比較,網(wǎng)上有很多測評快压。
參考文章:
另外還有一些第三方庫:
GKNavigationBarViewController - 導(dǎo)航欄聯(lián)動實(shí)現(xiàn)
pop - Facebook 開源的實(shí)現(xiàn) Paper 應(yīng)用平滑動畫和轉(zhuǎn)場效果的動畫引擎
BlocksKit - block工具包圆仔。將很多需要用delegate實(shí)現(xiàn)的方法整合成了block的形式
JHChainableAnimations - 鏈?zhǔn)絼赢?/p>
對于第三方庫,還有很多很多蔫劣,可參考:
維護(hù)中遇到的問題
對第三方框架封裝
在開發(fā)中坪郭,我們有必要對一些第三方框架根據(jù)項(xiàng)目需求進(jìn)行二次封裝。比如說第三方庫更新時脉幢,時常伴隨著一些api更新歪沃,如AFNetworking2.0更新到3.0后的差別,若沒有進(jìn)行二次封裝這樣會導(dǎo)致我們不得不修改大量代碼嫌松,維護(hù)難度增加沪曙。
是否使用?Interface Builder?
我們都知道萎羔,使用 Interface Builder 可以非骋鹤撸快速地完成UI頁面的制作,但是如果在團(tuán)隊開發(fā)中,需要對代碼進(jìn)行評審育灸,規(guī)范便成為重中之重腻窒。對于使用純代碼還是 Interface Builder,各有優(yōu)缺點(diǎn)磅崭,需要視公司情況和需求而定儿子。
第三方框架不再更新
還有一點(diǎn),第三方開源庫很多砸喻,一旦不再更新了柔逼,維護(hù)便成為一個重大的問題,我們需要深入學(xué)習(xí)其編程思想割岛,正所謂授人以魚不如授人以漁愉适。
最后說幾句
我們在寫代碼時,都必須遵循高聚合癣漆、低耦合的前提维咸,一份漂亮的代碼便于日后的維護(hù)和擴(kuò)展。對于有沒有必要使用 Swift 開發(fā)或者說使用 RAC 惠爽,個人認(rèn)為還是要視公司實(shí)際情況和項(xiàng)目需求而定癌蓖,畢竟學(xué)習(xí)和維護(hù)成本也是一個重要因素。