前言
本文主要介紹一些優秀好用的第三方庫,便于快速搭建項目。(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 ,個人認為還是要視公司實際情況和項目需求而定,畢竟學習和維護成本也是一個重要因素。