IOS 第三方庫
原文 http://adad184.com/2015/07/08/my-favorite-libraries-and-plugins/
前言
第三方庫是現在的程序員離不開的東西 不光是APP開發 基本上所有的商業項目 都會或多或少的使用到第三方庫
Github上Star>100的開源庫數量如下
可以看到JS以絕對的優勢排名第一 一定程度上也說明了JS在這幾年為什么發展得這么迅速 不會點JS都不好意思說自己是碼農 不過現在JS圈的造輪子浪潮也是愈演愈烈了 自己不寫個框架都不好意思打招呼
OC排名第四 相信這個排名還會上升 Swift暫時還擠不進前十 不過超過OC 也是指日可待(畢竟親兒子)
Xcode基本是Mac/iOS程序員的必備工具(AppCode我沒用過 不知道有多少人用?) 但是能說有多好用..這就仁者見仁了(跟Visual Studio是沒得比了) 不過在用了插件以后 倒也能讓生產力提升一大截
接下來我會介紹一些我本人常用的第三方庫和插件 也許不多 但是一定是久經考驗 用了一定不會錯
介紹
第三方庫
CocoaPod
CocoaPod并不是iOS上的第三方庫 而是大名鼎鼎的第三方庫的管理工具
在CocoaPod沒有出現之前 第三方庫的管理是非常痛苦的 尤其是一些大型的庫(比如nimbus) 每次對庫進行更新 都可能會非常的痛苦
CocoaPod的出現解決了這些問題 以Framework的方式引入第三方庫 極大的節約了集成的時間 而且通吃Objective-C和Swift(Swift上的 Cathatage 我沒有實際用過 但是它的那種集成方式還是比CocoaPod麻煩點)
iCarousel
在iOS 4.x的時代(我也是從4.0開始接觸iOS開發的) Coverflow 的效果可謂是風靡一時 初出茅廬的我當年對如何實現幾乎是束手無策(當年所有的電影資訊類的APP 如布丁愛生活等 都需要實現Coverflow選片的效果 碰巧我也要做一個) iCarousel的出現替我解決了一個大的難題
從此iCarousel成為了我每個項目的必備良藥(也是我最喜歡的庫) 不管是Coverflow還是輪播廣告 都能輕描淡寫的搞定 其內置的十來種顯示類型 基本可以解決90%的UI需求 而其強大的自定義功能 則可以解決剩余的10% :)
不熟悉的朋友可以嘗試一下其精美的demo( pod try iCarousel ) 所有的功能都在demo中一覽無余
作者 nicklockwood 也是一個高產的大神 同時維護著數量眾多且優質的開源庫(比如 iVersion iRate ) 大家不妨去看一看 淘一淘
AFNetworking / Alamofire
HTTP框架的龍頭老大 當年在與 ASIHTTPRequest 的競爭中笑到了最后(當然也是因為ASIHTTPRequest的作者不維護了 不過國內很多公司 因為歷史原因都在自行維護) 由于及時維護和擁抱語言的新特性 迅速被大家所接受和喜愛
相信每個人都用過 這里就不贅述了
MKNetworkKit
如果說AFNetworking是老大 那么MKNetworkKit可以說是小弟了 不過也因為比AFNetworking輕量的原因 也獲得了許多開發者的青睞
當年因為ASIHTTPRequest停止維護了 在機緣巧合之下 我在AFNetworking和MKNetworkKit之間選擇了后者 并在很多項目中進行了使用
不過也許是因為AFNetworking發展得更快更迅速 而作者本人是單兵作戰的原因 作者也基本放棄了更新(版本號在停留在0.8x) 十分可惜
SDWebImage
圖片異步下載和緩存管理的集大成者 UITableView的黃金搭檔 其代碼被開發者研究分享過無數次 喵大 的 Kingfisher (可以說是Swift版的SDWebImage)也是深受其影響
異步下載AFNetworking和MKNetworkKit都有實現 數據緩存也有 FastImageCache 與 TMCache 等 但是將其融會貫通的 唯有SDWebImage了
除了簡單的使用 sd_setImageWithURL 之外 SDImageCache 也是可以獨立使用的 功能也相當之強大
ZXingObjC
zxing 是Google出品的二維碼掃描組件 原本是Java編寫的 現在也有了各種語言的移植版 而ZXingObjC就是其中之一
zxing支持各種主流的一維碼二維碼掃描 簡單易用 小廠如果要實現二維碼掃描這個功能 基本都會選擇zxing
不過iOS7已內置了二維碼攝像頭掃描 而iOS8也已內置了二維碼靜態圖掃描 以后可能再也不需要用到ZXing了 :(
MBProgressHUD
簡單易用且穩定的HUD組件 半透明黑底白字的風格也經久不衰 loading提示的最佳選擇
Masonry / SnapKit
最好用的Autolayout手寫庫( Cartography 也不錯啦 但是還是用不慣) 幫助我輕易的跨越了Autolayout這道坎
我也曾多次在文章中提到過關于Masonry的使用方法 如果還沒有用過的朋友 不妨看一看
pop
非死book的工程師一直是神一般的存在 對開源社區的 貢獻 也是巨大的 極大的推動了各種變成語言的發展 比如 HipHop之于PHP react 之于JavaScript pop之于Objective-C等等
不管是 HipHop react 非死book的工程師總是抱著顛覆的態度來開源 pop也不例外 這點之前我也簡單介紹過 而以pop為基礎的 paper 一發布就震驚整個APP屆 在這點上pop也是厥功甚偉
pop對自定義動畫也支持得很好 我也以pop的自定義動畫為基礎寫過 MMTweanAnimation
ReactiveCocoa
說起來慚愧 大名鼎鼎的RAC 我只使用了點皮毛(只拿來做輸入驗證了)
暫時還沒有進行深層次的使用 對RAC的理解也停留在表面階段 不過 這篇文章 介紹得非常詳細 值得一看
GPUImage
如果你要做圖像(照片或者視頻)的相關處理 或者只是簡單的想做個像Camera360一樣的拍照濾鏡 那么你一定要研究一下GPUImage如它的名字所述 GPUImage是基于GPU的圖像處理框架 我們都知道 GPU是提升性能的關鍵 這也就是GPUImage如此重要 如此受歡迎的原因
Lumberjack
log系統是每個項目都應該有的東西 而Lumberjack是log系統中的翹楚你可以簡單的把它當成NSLog的替代品(簡單來說 Lumberjack比NSLog速度更快) 或者根據你的需要來打造一個更強大的日志系統
NSLogger
從名字可以看出 NSLogger也是一個log系統 其特點是附帶了一個功能強大的 Desktop Viewer 可以讓你方便的查看APP產生的日志(支持分級篩選等等 甚至可以直接log一張圖片)
AwesomeMenu
當年橫空出世的Path 其優美的設計 精彩的動畫 不知讓多少人嘴巴都合不攏 而最贊的 就是它的彈出菜單 一時成為了每個APP爭相模仿的對象有了AwesomeMenu 你可以輕易的實現它
MMDrawerController
普通的側滑菜單 用MMDrawerController就搞定了
realm
作為數據存儲的一等公民 CoreData的地位不言而喻 不過也因為使用起來不夠方便 才會出現 MagicalRecord 這種輔助類 甚至 fmdb 這種基于純sqlite的庫
而realm以挑戰者的身份閃亮登場 不僅讀取 性能更快 (據說數倍于CoraData) 接口 簡單易用 (以對象的形式使用數據 這點和leancloud的思路很相似) 并且還 跨平臺 (iOS/Android均可使用 OC/Swift/Java都支持)
如果你習慣使用 Mantle 之類的Modal轉換的話 Realm-JSON 肯定能討你歡心
作為YCombinator的孵化項目 其質量還是能得以保證的 至少我試用下來 確實給我以很大的驚喜 不管是API的設計 還是數據對象的定義 就連數據庫的版本升級 都非常的方便)
Xcode插件
Alcatraz
與CocoaPod類似 Alcatraz是Xcode的插件管理器 能夠讓你方便的管理Xcode的插件(不僅可以管理插件 還可以管理主題等等)
FuzzyAutocomplete
如果只讓我選一個插件留下 那必須是FuzzyAutocomplete 強大的模糊匹配輸入 讓你寫代碼的時候再也不用費腦子去記住名字那么長的對象或者函數名了 好用到讓你想哭
XAlign
作為有潔癖的碼農 看到不對齊的代碼一定是不能忍的 XAlign可以輕松解決你的煩惱
VVDocumenter-Xcode
喵大的又一力作 能夠識別當前函數的參數和返回類型 幫助你快速編寫符合規范的注釋(目前是以Javadoc為標準)
deriveddata-exterminator
如果你老是遇到Xcode抽風 提示你要因為某個原因要刪除某個目錄下的文件 否則編譯不過 那你一定會被這個插件感動 因為說明了遇到這個事的人不只你一個
Xcode-Quick-Localization
多語言在iOS開發中一直不是很方便 有了它 你可以省不少事
Backlight-for-XCode