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