80.GitHub前100第三方庫及各大公司使用的第三方庫
做iOS開發總會接觸到一些第三方庫,這裡整理一下,做一些吐槽。
目前比較活躍的社群仍舊是Github,除此以外也有一些不錯的庫散落在Google Code、SourceForge等地方。由於Github社群太過主流,這裡主要介紹一下Github裡面流行的iOS庫。
除了逛一下每日/每月流行之外,也可以到這裡來看一下整個iOS Repos的排名。
下面是一些比較流行的第三方庫:
HTTP
Socket
CocoaAsyncSocket無疑是目前封裝得最完善的Socket庫了:支援非同步TCP/UDP,支援GCD,Objective-C介面封裝。。目前沒有發現可以與之相比的同類產品。。
JSON
JSONKit算是第三方中最優秀的一個了:效能很高,檔案少。在JSONKit之前,SBJson非常非常流行,但是SBJson效能夠差,只是由於歷史原因仍然存在在某些工程裡面。如果工程只需要支援iOS5以上的系統,那就可以放棄那些第三方Json庫了,直接用系統提供的NSJSONSerialization,效能比第三方的好,又是官方API。。
XMPP
現在做個實時聊天,XMPP協議算是很成熟的方案了。XMPPFramework一個很不錯的選擇,可以直接和OpenFire伺服器打交道。專案不大人手不多的話,可以看看這個。
基礎工具類
SSToolkit算是一個不錯的工具包,提供各種比如編碼、加密、字串處理等等東西,還提供了一些不錯的自定義控制元件,並且文件非常齊全。
框架
過去有很多人再用three20,這個東西太大太重,文件又少,到頭來連Facebook都停止維護了。作為替代品nimbus現在流行了開來,關鍵在於它文件齊全。。國內有個MVC框架叫BeeFramework,號稱是頂級框架並且功能超過nimbus,有興趣的可以看一下。。 ReactiveCocoa把響應式程式設計這種上流的東西帶了過來,值得試一試。。
資料儲存
還是挺多人(比如我)喜歡直接跟SQLite打交道的,這方面fmdb封裝的很不錯。如果用CoreData來做儲存的,可以用一下MagicalRecord。
影象處理
GPUImage無疑是這方面的集大成者了。。用OpenGL ES2.0來實時處理圖片和視訊流,效能和功能都是頂尖的。
開發和除錯工具
PonyDebugger看上去是一個不錯的除錯工具,可以在電腦瀏覽器上遠端除錯iOS程式、檢視試圖層次、網路等等。CocoaLumberjack是個Log工具,號稱是可以提供企業級Log,使用者也挺多。
為了瞭解一下目前第三方庫的普及程度,下面列舉一些知名App對第三方庫的依賴。
人人
cocoaasyncsocket
ZipArchive
MBProgressHUD
JSONKit
GTMBase64
MKNetworkKit
HPGrowingTextView
zxing
可以看到,這些大型的App的依賴都很混亂,所以稍微解釋一下。這些大公司都有一個iOS團隊來協同開發,團隊成員的水平也參差不齊。有時由於歷史原因,例如某個App的某個元件依賴了ASIHttpRequest,但之後的新人改用了AFNetworking,就造成上面這種比較混亂的庫依賴關係。這就造成難以維護、程式碼冗餘等問題了。所以,引入一個第三方庫一定要慎重考慮,如果可能,儘量自己開發和實現相應的功能,第三方庫儘量只作為參考。 小團隊或者個人開發者可以不必過多考慮,開發速度優先。
------------------------------------------------------
GitHub Top 100 簡介
主要對當前 GitHub 排名前 100 的專案做一個簡單的簡介, 方便初學者快速瞭解到當前 Objective-C 在 GitHub 的情況.
專案名稱 | 專案資訊 |
---|---|
作者是 NSHipster 的博主, iOS 開發界的大神級人物, 畢業於卡內基·梅隆大學, 開源了許多牛逼的專案, 這個便是其中之一, AFNetworking 採用 NSURLConnection + NSOperation, 主要方便與服務端 API 進行資料交換, 操作簡單, 功能強大, 現在許多人都用它取代 ASIHTTPRequest | |
一款強大的圖片濾鏡工具, 支援自定義濾鏡, 可用來實時處理圖片和視訊流, 作者是 SonoPlot 公司的 CTO, 在很小的時候便開始接觸程式設計, 他在 SO上面的回答也有很多值得閱讀, GPUImage 這個專案從 2012 年開始, 使用 OpenGL 圖形程式介面編寫, 效能非常好, 現在很多 iOS 程式設計師都用它來實現 iOS 的模糊效果 | |
作者 Olivier Poitrey 是 Dailymotion 的 CTO, 擁有多個不錯的開源專案, 此專案常用於對從 Web 端接受到的圖片進行快取, 是 UIImageView 的擴充套件, 應用起來比較簡單 | |
主要用於 iOS 上網路通訊, 允許與 RESTful Web 服務互動, 常用於處理 API, 解析 JSON, 對映響應物件等操作, 簡單易用, 方便你把所有精力都放在對資料的操作上 | |
由 GitHub 工程師們開發的一個應用於 iOS 和 OS X 開發的函式響應式程式設計新框架, Matt 稱其為 "An open source project that exemplifies this brave new era for Objective-C", 也有人說它是 Cocoa 的未來, 具體可看唐巧寫的這篇文章 | |
由 Facebook iOS 客戶端衍生出的一款 iPhone 框架, 內建許多豐富的功能, 有豐富的介面, 對底層的操作便捷, 為開發者省下了很多時間, 但現在已經停止了更新, 一個 PR 把程式碼刪得乾乾淨淨, 不要好奇去點開 Files changed, 我點開後該頁面直接卡死, three20 當中的一位作者建立了 Nimbus, 算是 three20 的一個替代品 | |
作者 Matej Bukovinski 是一位全棧工程師, UI/UX 設計師, 此專案是一款提示框第三方庫, 幫助開發者快速應用到專案中) | |
作者是 Coursera 的 iOS 工程師, 該專案創作靈感來自於 Ruby on Rails 的 Active Record, 主要為方便操作 CoreData 而生, 幫助清除 CoreData 引用的程式碼, 協助方便 CoreData 的工作 | |
9. FMDB | 一個對 SQLite 進行封裝的庫, 使用起來方便, 簡單 |
作者是 GitHub 的員工, 文件寫的很清楚: Mantle makes it easy to write a simple model layer for your Cocoa or Cocoa Touch application, 主要用來將 JSON 資料模型化為 Model 物件, 唱吧在前段時間也改用 Mantle 了. | |
收集了很多扁平化 UI 的 iOS 元件, 方便使用 | |
一個輕量級的 iOS 網路通訊類庫, 基於 CFNetwork 框架開發, 但現在已經停止更新, 多數開發者改用 AFNetworking 替代) | |
Path 公司出品的 iOS 庫, 作者 Mallory Paine 是蘋果前員工, 此類庫適用於在滾動時快速顯示影象, 高速持久是其最大的特點 | |
一個輕量級的佈局框架, 同時支援 iOS 和 Mac OS X, 語法優雅, 幫助開發者快速適配不同解析度的 iOS 裝置 | |
Facebook 推出的一款具有閃爍效果的第三方控制元件, 供它旗下一款名為 Paper 的應用使用, 安裝使用整個過程都十分簡單 | |
又一款輕量級的 iOS 第三方控制元件, 用於顯示任務載入時的動畫, 非常輕便, 容易使用 | |
17. Slate | 一款視窗管理應用程式, 但在兩年前就已經停止更新了 |
主要用於解析 JSON, 適用於 iOS6 以下環境, 自從 iOS5 開始 Apple 官方給出了 NSJSONSerialization API, 自此大家都用官方的了 | |
作者 Jeff 曾為 Facebook, Google 做過不少好東西, 也是 three20 的成員之一, three20 停更後, 他創造出這個框架來代替 three20, 文件齊全 | |
這是 Mac 和 iOS 的一款強大的日誌框架, 配置簡單, 多執行緒, 提供更高階的 log 功能, 可用於代替預設的 NSLog 語句 | |
Facebook 官方的 iOS SDK, 方便開發者整合 Facebook 的一些功能到自己的 iOS APP 裡面 | |
Facebook 開源的一款 iOS UI 框架, Paper 用的就是該框架, 另外框架還用到了 Facebook 早期開源 Pop 動畫引擎 | |
Alcatraz 是一款管理 Xcode 外掛、模版以及顏色配置的工具, 可以整合到 Xcode 的圖形介面中, 安裝刪除都是幾條命令的事, 很方便, 支援自己開發外掛並上傳 | |
一款開源的 iOS 活動面板元件, 還原 Path 2.0 的側滑效果, 作者因為時間關係在兩年前停止對其更新 | |
26. FLEX | 這是 Flipboard 官方釋出的一組專門用於 iOS 開發的應用內除錯工具, 開發者無需將其連線到 LLDB/Xcode 或其他遠端除錯伺服器,支援直接在 App 中執行 |
是 Facebook 開源的一個命令列工具,用來替代蘋果的 XcodeBuild 工具, 極大的方便了 iOS 的構建和測試, 輸出錯誤資訊也比較友好, 受到許多 iOS 開發者的稱讚, 經常與其搭配使用的還有 OCUnit, Travis CI, OCLint 等測試工具 | |
超強的遊戲模擬器, 做遊戲開發必備, 官網做得也很不錯 | |
作者是英國 Charcoal Design 公司的創始人, 開源領域的貢獻頗為卓著, 這個專案就是其中之一, 這是一款可以在 iOS 上實現旋轉木馬檢視切換效果的第三方控制元件, 並提供多種切換效果 | |
作者 Roman Efimov 是雅虎的 iOS 工程師, 這個專案實現了 iOS 上的選單側滑效果, 創意來源於 Dribbble, 該專案支援 iOS8 | |
作者周楷雯是 90 後, 秒視的創始人, 該專案是一個帶動畫效果的圖表控制元件, 簡約易用, 受到不少開發者喜愛 | |
由 Square 公司推出的一款優秀的 iOS 應用網路除錯工具, 使用者可以實時看到應用程式的網路請求, 也可以對 iOS 應用程式的核心資料棧進行遠端除錯 | |
作者是 Thumb Labs 的聯合創始人, JVFloatLabeledTextField 是 UITextField 的子類, 主要實現輸入框標籤浮動效果, 創作靈感來自 Dribbble, 已出現多個移植版本 | |
UITableViewCell 的子類, 實現了左右滑動顯示資訊檢視並調出按鈕 | |
作者是一位中國人, 該專案主要是使用 CoreAnimation 還原了 Path menu 的動畫效果 | |
Reachablity 是用於檢測 iOS 裝置網路環境的庫 | |
作者是王巍國內著名的 iOS 開發者, 人稱喵神, 目前在日本 LINE 公司工作, 該專案幫助開發者輕鬆的生成註釋文件, 節省了不少工作量, 贊 | |
由 Chrome 團隊主導的一個專案, 意在用 URL 連線世界, 方便使用者接受資料, 目前尚處在實驗階段 | |
作者獨自一個人 Samuel Clay 做出來的一款名為 NewsBlur 的新聞閱讀器, 很多人都稱其為 Google Reader 的替代品, 這是它的原始碼 | |
一個可用於在 iOS, Mac 和 Android 上製作 2D 遊戲或其它圖形/互動應用的框架, 之前的專案名稱為 Cocos Swift, 目前該專案在 GitHub 上更新較為頻繁 | |
UILabel 的替代品, 使 iOS 上的 Label 功能更加豐富, 可支援連結植入等功能 | |
一個功能強大、簡單易用的非同步 socket 通訊類庫, 支援 TCP 和 UDP 協議, 可用於 Mac 和 iOS 裝置上, 作者 Robbie Hanson 是 Deusty 的首席軟體工程師 | |
作者是 Devin Ross, 這是在 iOS 上一款功能強大的 UI 效果類庫, 可以實現多種酷炫的效果, 目前仍在更新中 | |
無需編碼實現牛逼的動畫效果的庫, 連設計師都可以快速上手 | |
Square 公司開源的一個 WebSocket 客戶端, 穩定並且易用, 做實時應用常會用到, 受廣大開發者喜愛 | |
一個檢視控制器容器, 將子檢視處理成兩層, 通過滑動來處理層的切換, 創作靈感來自 Facebook 和 Path的 App, 作者是 Cleveland 的員工 | |
用於解析 JSON 資料的一個框架, 但是在 iOS5 以上版本大多數人都選擇使用 NSJSONSerialization 來解析 JSON, 該專案現在在 GitHub 上也幾乎沒怎麼更新了 | |
Facebook 開源的一款工具, 旨在幫助 iOS 開發者更快的迭代應用, 方便使用者動態的調整引數, 是的, Paper 這個專案也用到了 | |
Realm-Cocoa 是 Realm 公司推出一款移動端資料庫, 可以執行在手機、平板和可穿戴裝置之上, 其目標是取代 CoreData 和 SQLite 資料庫 | |
一個開源的與 Cocoa 緊密集合的基礎性框架 | |
一款用於提醒使用者給你的 App 打分的工具 | |
52. KIF | Square 出品的一個開源的使用者介面測試框架, 極大的簡化了 iOS 開發者的 UI 測試流程 |
Slack 推出的一款具有文字輸入框高度自適應, 自動輸入, 複製單元格內容等功能的解決方案 | |
IFTTT 開源的一個簡單易用的關鍵幀基礎動畫框架, 可通過手勢、scroll views, KVO, ReactiveCocoa 等方式來控制動畫 | |
Bolts 是一個 Parse 和 Facebook 在內部使用的底層庫, 方便移動開發 | |
一款易用的 OS X 視窗分屏操作快捷鍵工具, 這是其原始碼 | |
57. nui | 方便樣式化 iOS 應用中的 UI 元素, 可在短時間內樣式化整個應用, 類 CSS 原理 |
Induction 是一款用於理解資料關係的管理工具, 這是其程式程式碼 | |
一個能迅速解析伺服器返回的 Json 資料的庫, 方便資料的型別轉換 | |
一個開源的 iOS 富文字元件, 它可以解析 HTML 與 CSS 並最終用 CoreText 繪製出來, 通常用於在一些需要顯示富文字的場景下代替低效能的 UIWebView | |
基於 Facebook Pop 引擎的 iOS 動畫庫, 集合了很多動畫效果 | |
一個用來彈出顯示警告和通知的輕量級庫, 樣式豐富, 簡單易用 | |
一個簡單安全的 KVO(Key-value Observing, 鍵-值 觀察)工具, 提供簡單方便、執行緒安全的API, Facebook 的開源專案之一 | |
用於快速建立複雜的 iOS 表單, 自定義了 UITableViewCell, TableView 的樣式 | |
一款只需一行程式碼便可整合上拉重新整理和下拉載入的元件 | |
Cheddar 是一款簡單易用的日程管理軟體, 這是其早期版本的開原始碼, 該專案已停止維護 | |
69. XVim | 一款在 Xcode 上實現了 Vim 功能的外掛 |
iOS 應用程式的基礎模板, 使用該模板可以省掉許多專案初始編碼的工作, 內建非常多豐富的功能, 現已經停止維護 | |
一個 UIViewController 容器, 靈感來自 Facebook 和 Path 2.0 應用的選單, 實現了左右側滑的操作 | |
收集了很多構思優秀的 NSFormatter 子類 | |
iDevRecipes 部落格的程式碼, 演示如何實現一些有趣的控制元件, 該專案在兩年前(2013)停止了更新 | |
一個基於 RFC-3920 實現, 支援多執行緒和執行緒保護, 同時通用於所有的 iOS 和 Mac OS 開發裝置的通訊框架. | |
一款可以將 HTML/CSS/JS 網路應用打包成原生 Mac App 的工具 | |
iOS 模糊背景類庫, 可以方便的根據底層顯示的狀態生成模糊效果 | |
整合演示了多個具有 iOS7 新特性的的專案, 提供了非常多的例子參考 | |
提供強大的 iOS 開發非同步功能, 是 Promises 的實現, 受到廣大開發者的追捧 | |
此為 Facebook 推出的 Quartz Composer 的一個開源外掛, 由其設計團隊花費了 9 個月打造而成, 目的是為方便設計師快速構建原型, 以零程式碼完成複雜動畫的合成和測試, 堪稱神器 | |
一款強大的日誌分析工具, 具有大視窗檢視 Log, 自定義日誌等級等功能 | |
一款對 UIImage 的 imageNamed 提供自動補全功能的外掛, 非常方便 | |
一個簡單卻強大的 AutoLayout API 庫, 相容了 Objective-C 和 Swift, 擴充套件了 UIView/NSView, NSArray, 和 NSLayoutConstraint | |
一款 Objective-C 文件生成工具, 生成的文件風格保持與 Apple 官方的一致, 極大的方便了 Xcode 識別自己寫的 API 文件, 安裝也是十分的簡單 | |
iTerm2 被不少程式設計師稱讚為 Mac 下最好用的終端, 這是其原始碼, 配合 oh-my-zsh 使用效果更佳 | |
87. Kiwi | 一個行為驅動開發測試框架, 適用於 iOS 平臺, 旨在為開發者提供一個簡單配置便可使用的 BDD 庫 |
一款命令列工具, 用來給 Mac OS X 使用者傳送通知 | |
Mac OS X 下的一款開源的 Markdown 編輯器, 創意來自與 Mou, 使用 brew cask 即可完成安裝 | |
90. TwUI | Twitter 開源的一個支援硬體加速的 Mac 的 UI 框架, 最後一次的更新時間是在 3 年前(2012) |
實現了類似摺紙效果的檢視切換, 可從不同方向進行切換, 該專案已經許久未更新 | |
一款開源的 iOS PDF 閱讀器, 附帶書籤, 列綱要等功能 | |
一個方便使用 Objective-C 與 JavaScript 進行通訊的第三方庫, 支援訊息傳送, 接收, 訊息處理器的註冊與呼叫以及設定訊息處理的回撥 | |
iOSX-Sampler 系列之一, 整合演示了多個具有 iOS8 新特性的的專案, 提供了非常多的例子參考 | |
一個用於 Mac OS X 或 iOS 應用的輕量級、可嵌入的HTTP 伺服器框架, 方便開發者在應用中嵌入一個 HTTP 伺服器 | |
96. Kod | Mac OS X 上一款專為程式設計師打造的編輯器, 這是其開原始碼, 可惜的是作者在 2011 年停止了維護 |
下拉鍵盤在 iOS 移動文字欄位的通用解決方案, 能夠自動處理鍵盤彈出後出現遮擋到文字輸入框的問題 | |
一個輕量級網路請求框架, 完全基於 ARC, 僅有兩個類, 具有自主操作多個網路請求, 更加準確的顯示網路活動指標等優點 | |
一個 iOS 平臺上的檢視控制器集合, 通過展現多個檢視控制器來進行控制器之間的切換. 設定簡單, 高度靈活 | |
一個命令列工具, 通過專案裡的 .xcdatamodel 檔案, 可以為每個 entity 生成兩個類,
方便 CoreData 的使用 |
推薦資料:
參考資料: