GitHub前100第三方库及各大公司使用的第三方库

各大公司使用的第三方库

做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽。

目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code、SourceForge等地方。由于Github社区太过主流,这里主要介绍一下Github里面流行的iOS库。

首先整理了一份Github上排名靠前的iOS库(大概600个repos)

除了逛一下每日/每月流行之外,也可以到这里来看一下整个iOS Repos的排名。

 

下面是一些比较流行的第三方库:

 

HTTP

相比较之下,AFNetworking是目前最优秀的一个了:轻量、易用、使用者多、开发者有在积极维护。在AFN出现之前,这个角色是由ASIHTTPRequest扮演的,只是到现在年久失修了。关于AFN和ASI的对比,这里有一篇不错的文章http://www.infoq.com/cn/articles/afn_vs_asi。除此之外,MKNetworkKitRestKit也有一定的使用者。

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对第三方库的依赖。

网易新闻
AppleReachability
ASIHTTPRequest
EGOTableViewPullRefresh
GTMNSString+HTML
MGTemplateEngine
MPOAuth
RegexKitLite
SDWebImage
SSZipArchive
wax

 

Garageband
MurmurHash
libpng
zlib
SBJson (json-framework)

 

iWork三套件
MOKit
Boost C++ Library
protobuf
OpenGL Mathematics
SQLite
cephes math library

 

Pinterest
AFNetworking
AFHttpClientLogger
Facebook SDK
iRate
MAKVONotificationCenter
SDWebImage
SFHFKeychainUtils
SSPullToRefresh
SVProgressHUD
TTTAttributedLabel
TTTLocalizedPluralString
UIAlertView-Blocks

 

多看阅读
fmdb
ASIHTTPRequest
FreeType
JSONKit
Objective-Zip
Skia (Google)
MBProgressHUD

 

淘宝
MAZeroingWeakRef
MBProgressHUD
ABContactHelper
ASIHTTPRequest
CocoaLumberjack
EGOTableViewPullRefresh
fmdb
GTMBase64
JSONKit
SBJson (json-framework)
RTLabel
SDWebImage
SVPullToRefresh
three20
ziparchive

微信
cocos2d
EGOTableViewPullRefresh
Facebook iOS SDK
JSONKit
SBJson
ziparchive

 

QQ
ASIHTTPRequest
FMDB
CocoaAsyncSocket
JSONKit
MBProgressHUD
OpenUDID
SBJson
SVPullToRefresh

 

百度地图
AFNetworking
GTMBase64
JSONKit
MBProgressHUD
RNCachingURLProtocol
SDWebImage

 

微博
ABContactHelper
AFNetworking
ASIHTTPRequest
DACircularProgressView
DDProgressView
DTFoundation
fmdb
JSONKit
SBJson
MBProgressHUD
MTStatusBarOverlay
OpenUDID
SFHFKeychainUtils

人人
cocoaasyncsocket
ZipArchive
MBProgressHUD
JSONKit
GTMBase64
MKNetworkKit
HPGrowingTextView
zxing
可以看到,这些大型的App的依赖都很混乱,所以稍微解释一下。这些大公司都有一个iOS团队来协同开发,团队成员的水平也参差不齐。有时由于历史原因,例如某个App的某个组件依赖了ASIHttpRequest,但之后的新人改用了AFNetworking,就造成上面这种比较混乱的库依赖关系。这就造成难以维护、代码冗余等问题了。所以,引入一个第三方库一定要慎重考虑,如果可能,尽量自己开发和实现相应的功能,第三方库尽量只作为参考。 小团队或者个人开发者可以不必过多考虑,开发速度优先。

 

——————————————————

 

 

GitHub Top 100 简介

 

主要对当前 GitHub 排名前 100 的项目做一个简单的简介, 方便初学者快速了解到当前 Objective-C 在 GitHub 的情况.

项目名称项目信息
1. AFNetworking作者是 NSHipster 的博主, iOS 开发界的大神级人物, 毕业于卡内基·梅隆大学, 开源了许多牛逼的项目, 这个便是其中之一, AFNetworking 采用 NSURLConnection + NSOperation, 主要方便与服务端 API 进行数据交换, 操作简单, 功能强大, 现在许多人都用它取代 ASIHTTPRequest
2. GPUImage一款强大的图片滤镜工具, 支持自定义滤镜, 可用来实时处理图片和视频流, 作者是 SonoPlot 公司的 CTO, 在很小的时候便开始接触编程, 他在 SO上面的回答也有很多值得阅读, GPUImage 这个项目从 2012 年开始, 使用 OpenGL 图形程序接口编写, 性能非常好, 现在很多 iOS 程序员都用它来实现 iOS 的模糊效果
3. SDWebImage作者 Olivier Poitrey 是 Dailymotion 的 CTO, 拥有多个不错的开源项目, 此项目常用于对从 Web 端接受到的图片进行缓存, 是 UIImageView 的扩展, 应用起来比较简单
4. RestKit主要用于 iOS 上网络通信, 允许与 RESTful Web 服务交互, 常用于处理 API, 解析 JSON, 映射响应对象等操作, 简单易用, 方便你把所有精力都放在对数据的操作上
5. ReactiveCocoa由 GitHub 工程师们开发的一个应用于 iOS 和 OS X 开发的函数响应式编程新框架, Matt 称其为 “An open source project that exemplifies this brave new era for Objective-C”, 也有人说它是 Cocoa 的未来, 具体可看唐巧写的这篇文章
6. three20由 Facebook iOS 客户端衍生出的一款 iPhone 框架, 内置许多丰富的功能, 有丰富的界面, 对底层的操作便捷, 为开发者省下了很多时间, 但现在已经停止了更新, 一个 PR 把代码删得干干净净, 不要好奇去点开 Files changed, 我点开后该页面直接卡死, three20 当中的一位作者创建了 Nimbus, 算是 three20 的一个替代品
7. MBProgressHUD作者 Matej Bukovinski 是一位全栈工程师, UI/UX 设计师, 此项目是一款提示框第三方库, 帮助开发者快速应用到项目中)
8. MagicalRecord作者是 Coursera 的 iOS 工程师, 该项目创作灵感来自于 Ruby on Rails 的 Active Record, 主要为方便操作 CoreData 而生, 帮助清除 CoreData 引用的代码, 协助方便 CoreData 的工作
9. FMDB一个对 SQLite 进行封装的库, 使用起来方便, 简单
10. Mantle作者是 GitHub 的员工, 文档写的很清楚: Mantle makes it easy to write a simple model layer for your Cocoa or Cocoa Touch application, 主要用来将 JSON 数据模型化为 Model 对象, 唱吧在前段时间也改用 Mantle 了.
11. FlatUIKit收集了很多扁平化 UI 的 iOS 组件, 方便使用
12. ASIHTTPRequest一个轻量级的 iOS 网络通信类库, 基于 CFNetwork 框架开发, 但现在已经停止更新, 多数开发者改用 AFNetworking 替代)
13. FastImageCachePath 公司出品的 iOS 库, 作者 Mallory Paine 是苹果前员工, 此类库适用于在滚动时快速显示图像, 高速持久是其最大的特点
14. Masonry一个轻量级的布局框架, 同时支持 iOS 和 Mac OS X, 语法优雅, 帮助开发者快速适配不同分辨率的 iOS 设备
15. ShimmerFacebook 推出的一款具有闪烁效果的第三方控件, 供它旗下一款名为 Paper 的应用使用, 安装使用整个过程都十分简单
16. SVProgressHUD又一款轻量级的 iOS 第三方控件, 用于显示任务加载时的动画, 非常轻便, 容易使用
17. Slate一款窗口管理应用程序, 但在两年前就已经停止更新了
18. JSONKit主要用于解析 JSON, 适用于 iOS6 以下环境, 自从 iOS5 开始 Apple 官方给出了 NSJSONSerialization API, 自此大家都用官方的了
19. Nimbus作者 Jeff 曾为 Facebook, Google 做过不少好东西, 也是 three20 的成员之一, three20 停更后, 他创造出这个框架来代替 three20, 文档齐全
20. CocoaLumberjack这是 Mac 和 iOS 的一款强大的日志框架, 配置简单, 多线程, 提供更高级的 log 功能, 可用于代替默认的 NSLog 语句
21. Facebook SDK for iOSFacebook 官方的 iOS SDK, 方便开发者集成 Facebook 的一些功能到自己的 iOS APP 里面
22. AsyncDisplayKitFacebook 开源的一款 iOS UI 框架, Paper 用的就是该框架, 另外框架还用到了 Facebook 早期开源 Pop 动画引擎
23. AlcatrazAlcatraz 是一款管理 Xcode 插件、模版以及颜色配置的工具, 可以集成到 Xcode 的图形界面中, 安装删除都是几条命令的事, 很方便, 支持自己开发插件并上传
24. ViewDeck一款开源的 iOS 活动面板组件, 还原 Path 2.0 的侧滑效果, 作者因为时间关系在两年前停止对其更新
25. JSQMessagesViewController优雅的 iOS 消息类库, 常用于聊天应用中, 可定制性高
26. FLEX这是 Flipboard 官方发布的一组专门用于 iOS 开发的应用内调试工具, 开发者无需将其连接到 LLDB/Xcode 或其他远程调试服务器,支持直接在 App 中运行
27. Xctool是 Facebook 开源的一个命令行工具,用来替代苹果的 XcodeBuild 工具, 极大的方便了 iOS 的构建和测试, 输出错误信息也比较友好, 受到许多 iOS 开发者的称赞, 经常与其搭配使用的还有 OCUnit, Travis CIOCLint 等测试工具
28. OpenEmu超强的游戏模拟器, 做游戏开发必备, 官网做得也很不错
29. iCarousel作者是英国 Charcoal Design 公司的创始人, 开源领域的贡献颇为卓著, 这个项目就是其中之一, 这是一款可以在 iOS 上实现旋转木马视图切换效果的第三方控件, 并提供多种切换效果
30. RESideMenu作者 Roman Efimov 是雅虎的 iOS 工程师, 这个项目实现了 iOS 上的菜单侧滑效果, 创意来源于 Dribbble, 该项目支持 iOS8
321 PNChart作者周楷雯是 90 后, 秒视的创始人, 该项目是一个带动画效果的图表控件, 简约易用, 受到不少开发者喜爱
31.2PonyDebugger由 Square 公司推出的一款优秀的 iOS 应用网络调试工具, 用户可以实时看到应用程序的网络请求, 也可以对 iOS 应用程序的核心数据栈进行远程调试
33. JVFloatLabeledTextField作者是 Thumb Labs 的联合创始人, JVFloatLabeledTextField 是 UITextField 的子类, 主要实现输入框标签浮动效果, 创作灵感来自 Dribbble, 已出现多个移植版本
34. SWTableViewCellUITableViewCell 的子类, 实现了左右滑动显示信息视图并调出按钮
35. AwesomeMenu作者是一位中国人, 该项目主要是使用 CoreAnimation 还原了 Path menu 的动画效果
36. ReachabilityReachablity 是用于检测 iOS 设备网络环境的库
37. VVDocumenter-Xcode作者是王巍国内著名的 iOS 开发者, 人称喵神, 目前在日本 LINE 公司工作, 该项目帮助开发者轻松的生成注释文档, 节省了不少工作量, 赞
38. The Physical Web由 Chrome 团队主导的一个项目, 意在用 URL 连接世界, 方便用户接受数据, 目前尚处在实验阶段
39. NewsBlur作者独自一个人 Samuel Clay 做出来的一款名为 NewsBlur 的新闻阅读器, 很多人都称其为 Google Reader 的替代品, 这是它的源码
40. Cocos2D-SpriteBuilder一个可用于在 iOS, Mac 和 Android 上制作 2D 游戏或其它图形/交互应用的框架, 之前的项目名称为 Cocos Swift, 目前该项目在 GitHub 上更新较为频繁
41. TTTAttributedLabelUILabel 的替代品, 使 iOS 上的 Label 功能更加丰富, 可支持链接植入等功能
42. CocoaAsyncSocket一个功能强大、简单易用的异步 socket 通讯类库, 支持 TCP 和 UDP 协议, 可用于 Mac 和 iOS 设备上, 作者 Robbie Hanson 是 Deusty 的首席软件工程师
43. TapkuLibrary作者是 Devin Ross, 这是在 iOS 上一款功能强大的 UI 效果类库, 可以实现多种酷炫的效果, 目前仍在更新中
44. Canvas无需编码实现牛逼的动画效果的库, 连设计师都可以快速上手
45. SocketRocketSquare 公司开源的一个 WebSocket 客户端, 稳定并且易用, 做实时应用常会用到, 受广大开发者喜爱
46. ECSlidingViewController一个视图控制器容器, 将子视图处理成两层, 通过滑动来处理层的切换, 创作灵感来自 Facebook 和 Path的 App, 作者是 Cleveland 的员工
47. Json Framework用于解析 JSON 数据的一个框架, 但是在 iOS5 以上版本大多数人都选择使用 NSJSONSerialization 来解析 JSON, 该项目现在在 GitHub 上也几乎没怎么更新了
48. TweaksFacebook 开源的一款工具, 旨在帮助 iOS 开发者更快的迭代应用, 方便用户动态的调整参数, 是的, Paper 这个项目也用到了
49. realm-cocoaRealm-Cocoa 是 Realm 公司推出一款移动端数据库, 可以运行在手机、平板和可穿戴设备之上, 其目标是取代 CoreData 和 SQLite 数据库
50. BlocksKit一个开源的与 Cocoa 紧密集合的基础性框架
51. Appirater一款用于提醒用户给你的 App 打分的工具
52. KIFSquare 出品的一个开源的用户界面测试框架, 极大的简化了 iOS 开发者的 UI 测试流程
53. SlackTextViewControllerSlack 推出的一款具有文字输入框高度自适应, 自动输入, 复制单元格内容等功能的解决方案
54. JazzHandsIFTTT 开源的一个简单易用的关键帧基础动画框架, 可通过手势、scroll views, KVO, ReactiveCocoa 等方式来控制动画
55. Bolts-iOSBolts 是一个 Parse 和 Facebook 在内部使用的底层库, 方便移动开发
56. Spectacle一款易用的 OS X 窗口分屏操作快捷键工具, 这是其源代码
57. nui方便样式化 iOS 应用中的 UI 元素, 可在短时间内样式化整个应用, 类 CSS 原理
58. InductionInduction 是一款用于理解数据关系的管理工具, 这是其程序代码
59. JSONModel一个能迅速解析服务器返回的 Json 数据的库, 方便数据的类型转换
60. DTCoreText一个开源的 iOS 富文本组件, 它可以解析 HTML 与 CSS 并最终用 CoreText 绘制出来, 通常用于在一些需要显示富文本的场景下代替低性能的 UIWebView
61. Popping基于 Facebook Pop 引擎的 iOS 动画库, 集合了很多动画效果
62. TSMessages一个用来弹出显示警告和通知的轻量级库, 样式丰富, 简单易用
63. KVOController一个简单安全的 KVO(Key-value Observing, 键-值 观察)工具, 提供简单方便、线程安全的API, Facebook 的开源项目之一
64. MWPhotoBrowser一款简单的 iOS 照片浏览控件
65. MMDrawerController一个轻量级, 易于使用的侧边抽屉导航 iOS 控件
66. QuickDialog用于快速创建复杂的 iOS 表单, 自定义了 UITableViewCell, TableView 的样式
67. SVPullToRefresh一款只需一行代码便可集成上拉刷新和下拉加载的组件
68. cheddar-iosCheddar 是一款简单易用的日程管理软件, 这是其早期版本的开源代码, 该项目已停止维护
69. XVim一款在 Xcode 上实现了 Vim 功能的插件
70. EGOTableViewPullRefresh一款提供下拉刷新的控件, 最后更新时间是一年前
71. iOS-boilerplateiOS 应用程序的基础模板, 使用该模板可以省掉许多项目初始编码的工作, 内置非常多丰富的功能, 现已经停止维护
72. JASidePanels一个 UIViewController 容器, 灵感来自 Facebook 和 Path 2.0 应用的菜单, 实现了左右侧滑的操作
73. FormatterKit收集了很多构思优秀的 NSFormatter 子类
74. MSDynamicsDrawerViewController实现了具有动态弹性效果的抽屉式侧边导航栏, 效果丰富, 可定制性强
75. idev-recipesiDevRecipes 博客的代码, 演示如何实现一些有趣的控件, 该项目在两年前(2013)停止了更新
76. XMPPFramework一个基于 RFC-3920 实现, 支持多线程和线程保护, 同时通用于所有的 iOS 和 Mac OS 开发设备的通信框架.
77. MacGap1一款可以将 HTML/CSS/JS 网络应用打包成原生 Mac App 的工具
78. FXBlurViewiOS 模糊背景类库, 可以方便的根据底层显示的状态生成模糊效果
79. iOS7-Sampler整合演示了多个具有 iOS7 新特性的的项目, 提供了非常多的例子参考
80. PromiseKit提供强大的 iOS 开发异步功能, 是 Promises 的实现, 受到广大开发者的追捧
81. Origami此为 Facebook 推出的 Quartz Composer 的一个开源插件, 由其设计团队花费了 9 个月打造而成, 目的是为方便设计师快速构建原型, 以零代码完成复杂动画的合成和测试, 堪称神器
82. NSLogger一款强大的日志分析工具, 具有大窗口查看 Log, 自定义日志等级等功能
83. KSImageNamed-Xcode一款对 UIImage 的 imageNamed 提供自动补全功能的插件, 非常方便
84. PureLayout一个简单却强大的 AutoLayout API 库, 兼容了 Objective-C 和 Swift, 扩展了 UIView/NSView, NSArray, 和 NSLayoutConstraint
85. AppleDoc一款 Objective-C 文档生成工具, 生成的文档风格保持与 Apple 官方的一致, 极大的方便了 Xcode 识别自己写的 API 文档, 安装也是十分的简单
86. iTerm2iTerm2 被不少程序员称赞为 Mac 下最好用的终端, 这是其源代码, 配合 oh-my-zsh 使用效果更佳
87. Kiwi一个行为驱动开发测试框架, 适用于 iOS 平台, 旨在为开发者提供一个简单配置便可使用的 BDD 库
88. terminal-notifier一款命令行工具, 用来给 Mac OS X 用户发送通知
89. MacDownMac OS X 下的一款开源的 Markdown 编辑器, 创意来自与 Mou, 使用 brew cask 即可完成安装
90. TwUITwitter 开源的一个支持硬件加速的 Mac 的 UI 框架, 最后一次的更新时间是在 3 年前(2012)
91. PaperFold for iOS实现了类似折纸效果的视图切换, 可从不同方向进行切换, 该项目已经许久未更新
92. Reader一款开源的 iOS PDF 阅读器, 附带书签, 列纲要等功能
93. WebViewJavascriptBridge一个方便使用 Objective-C 与 JavaScript 进行通信的第三方库, 支持消息发送, 接收, 消息处理器的注册与调用以及设置消息处理的回调
94. iOS8-SampleriOSX-Sampler 系列之一, 整合演示了多个具有 iOS8 新特性的的项目, 提供了非常多的例子参考
95. CocoaHTTPServer一个用于 Mac OS X 或 iOS 应用的轻量级、可嵌入的HTTP 服务器框架, 方便开发者在应用中嵌入一个 HTTP 服务器
96. KodMac OS X 上一款专为程序员打造的编辑器, 这是其开源代码, 可惜的是作者在 2011 年停止了维护
97. TPKeyboardAvoiding下拉键盘在 iOS 移动文本字段的通用解决方案, 能够自动处理键盘弹出后出现遮挡到文本输入框的问题
98. MKNetworkKit一个轻量级网络请求框架, 完全基于 ARC, 仅有两个类, 具有自主操作多个网络请求, 更加准确的显示网络活动指标等优点
99. PKRevealController一个 iOS 平台上的视图控制器集合, 通过展现多个视图控制器来进行控制器之间的切换. 设置简单, 高度灵活
00. AQGridView一个命令行工具, 通过项目里的 .xcdatamodel 文件, 可以为每个 entity 生成两个类, 方便 CoreData 的使用

 

推荐资料:

iOS最全学习资源汇总

参考资料:

iOS 第三方开源库的吐槽和备忘

GitHub Top 100 简介

 

 

 

 

 

    原文作者:DCSnail-蜗牛
    原文地址: https://blog.csdn.net/wangyanchang21/article/details/51088169
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞