前言
第三方庫是現在的程序員離不開的東西 不光是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
Facebook的工程師一直是神一般的存在 對開源社區的貢獻也是巨大的 極大的推動了各種變成語言的發展 比如HipHop之於PHP react之於JavaScript pop之於Objective-C等等
不管是HipHop react Facebook的工程師總是抱著顛覆的態度來開源 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
就如果Xcode默認的80個字的分頁提示一樣 高亮當前正在編輯的一行 也是一種友好的提示 喜不喜歡也就因人而異了
小結
以上的介紹 都是從我自身的使用經驗觸發的 可能大部分大家都用過了 而我也將會持續的更新這份列表 只要有優秀使用的東東 我都會添加進來