转自ibireme的博客
做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。除此之外,MKNetworkKit和RestKit也有一定的使用者。
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
ASIHTTPRequest
EGOTableViewPullRefresh
GTMNSString+HTML
MGTemplateEngine
MPOAuth
RegexKitLite
SDWebImage
SSZipArchive
wax
Garageband
iWork三套件
Pinterest
AFNetworking
AFHttpClientLogger
Facebook SDK
iRate
MAKVONotificationCenter
SDWebImage
SFHFKeychainUtils
SSPullToRefresh
SVProgressHUD
TTTAttributedLabel
TTTLocalizedPluralString
UIAlertView-Blocks
AFHttpClientLogger
Facebook SDK
iRate
MAKVONotificationCenter
SDWebImage
SFHFKeychainUtils
SSPullToRefresh
SVProgressHUD
TTTAttributedLabel
TTTLocalizedPluralString
UIAlertView-Blocks
多看阅读
淘宝
MAZeroingWeakRef
MBProgressHUD
ABContactHelper
ASIHTTPRequest
CocoaLumberjack
EGOTableViewPullRefresh
fmdb
GTMBase64
JSONKit
SBJson (json-framework)
RTLabel
SDWebImage
SVPullToRefresh
three20
ziparchive
MBProgressHUD
ABContactHelper
ASIHTTPRequest
CocoaLumberjack
EGOTableViewPullRefresh
fmdb
GTMBase64
JSONKit
SBJson (json-framework)
RTLabel
SDWebImage
SVPullToRefresh
three20
ziparchive
微信
QQ
ASIHTTPRequest
FMDB
CocoaAsyncSocket
JSONKit
MBProgressHUD
OpenUDID
SBJson
SVPullToRefresh
百度地图
微博
ABContactHelper
AFNetworking
ASIHTTPRequest
DACircularProgressView
DDProgressView
DTFoundation
fmdb
JSONKit
SBJson
MBProgressHUD
MTStatusBarOverlay
OpenUDID
SFHFKeychainUtils
AFNetworking
ASIHTTPRequest
DACircularProgressView
DDProgressView
DTFoundation
fmdb
JSONKit
SBJson
MBProgressHUD
MTStatusBarOverlay
OpenUDID
SFHFKeychainUtils
人人
可以看到,这些大型的App的依赖都很混乱,所以稍微解释一下。这些大公司都有一个iOS团队来协同开发,团队成员的水平也参差不齐。有时由于历史原因,例如某个App的某个组件依赖了ASIHttpRequest,但之后的新人改用了AFNetworking,就造成上面这种比较混乱的库依赖关系。这就造成难以维护、代码冗余等问题了。所以,引入一个第三方库一定要慎重考虑,如果可能,尽量自己开发和实现相应的功能,第三方库尽量只作为参考。 小团队或者个人开发者可以不必过多考虑,开发速度优先。
最后吐槽一下cocoapods。
一个语言的流行总伴随着第三方库的丰富,相应的也会出现依赖库管理的工具。cocoapods之于ObjC,就像maven/gradle 之于java、gem之于ruby那样。 cocoapods基本上是创建在在github社区上的,开源并且社区活跃。除了用github上的中央仓库外,也可以自己搭建私服什么的随便乱搞。
但就我来说,不推荐使用cocoapods,吐槽如下:
1.像maven这样的工具,是为了管理庞大的第三方库依赖、控制版本、构建工程等等而产生的,很难想象一个依赖了上百个jar包的web项目不用包管理构建会变成什么样。。但是,iOS开发是客户端的开发啊,如果真有一个工程依赖了那么多第三方工具,这个App能保持稳定吗。。通常情况下一个iOS工程不会有那么多包依赖。
2.按常理来看,一个人的手头不可能有太多的工程同时进行,也不太可能一天之内创建N个App来发布。cocoapods能节省的重复工作量,还不如它带来麻烦多。。
3.修改和调试不便。如果某个第三方库需要少量修改才能实现需求,用cocoapods来处理会比较麻烦。
关于第三方库,同样也不推荐过多使用,吐槽如下:
1.消耗时间,一个开源库,拿过来需要仔细考察代码质量,确认是否足够可靠。如果出现问题,需要仔细审查开源库的内部实现。如果这些工作太消耗时间,还不如自己实现。
2.可维护性差。一旦遇到系统升级、API更换,第三方库不能确保不出问题。当出问题后也难以找到人来维护。如果跟进第三方库的改变,仍然容易出现新问题。
3.法律问题。。大公司需要仔细审查许可协议,小公司各种不怕那就没问题。。
相关推荐
标题提到的“iOS 视频音频第三方”很可能是指一个集成视频和音频处理功能的框架或库,可能是开源的,方便开发者集成到自己的应用中。描述中提到的“封装得特别好”,意味着这个库可能具有良好的API设计,易于理解和...
本资源提供了iOS第三方分享的源码,这对于开发者来说是一个很好的学习和参考材料。 首先,我们需要理解iOS中的分享机制。iOS提供了一个内置的框架叫做Social Framework,它支持Facebook、Twitter以及Sina Weibo等...
iOS第三方登录之Twitter(登录,获取用户信息)
本文将详细介绍“ios 视频播放第三方(KrVideoPlayerPlus-master)”这一开源项目,以及它如何帮助开发者实现视频播放,包括小窗口播放和全屏播放。 **1. KrVideoPlayerPlus介绍** KrVideoPlayerPlus是一款适用于...
ios常用第三方库:ASIHTTPRequest MBProgressHUD SBJson SDWebImage CorePlotHeaders utility工具
### iOS常用开源库详解 #### 一、网络请求:HTTP处理 **1.1 AFNetworking** - **简介**:AFNetworking 是一个非常流行的 iOS 和 Mac 网络通信库,它基于 `NSURLConnection` 和 `NSURLSession` 构建,提供了简单易用...
本资源包“常用ios第三方库集合”包含了一些常用的iOS开发框架,让我们逐一探讨这些库的重要性和使用方法。 首先,我们看到的是`QFRequest`,它包含`QFRequest.h`和`QFRequest.m`两个文件,这很可能是自定义的一个...
本主题将详细探讨两个常用的第三方库——libqrencode和ZBarSDK,它们分别用于生成二维码和扫描二维码。 首先,libqrencode是一个开源的二维码编码库,支持多种数据类型,包括ASCII文本、URL、电话号码等。在iOS项目...
在iOS开发领域,利用第三方库和XCode插件是提升开发效率、丰富应用功能的重要手段。随着开源文化的普及,许多优秀的库和工具在GitHub上获得了广泛的使用和认可。在这些资源中,针对iOS平台的工具和库尤其受到开发者...
HMGLTransitions是一款优秀的第三方开源类库,专门用于实现各种炫酷的视图控制器间过渡效果。开发者杜信峰在CSDN博客上对此有详尽的介绍,其分类链接为`...
在iOS开发中,引入第三方框架可以极大地提升开发效率和应用质量。本篇文章将重点讨论“ios开发 常用第三方框架”中的一个具体实践:在UITableView中实现数据刷新时的header和footer动画,同时也会涉及与之相关的网络...
在iOS开发中,第三方框架是由开发者或社区创建的库,它们提供了预封装的功能和服务,以供其他开发者在自己的项目中使用。这些框架通常通过CocoaPods、Carthage或Swift Package Manager等包管理器进行安装和管理,...
验证方法是自己做个静态库 ,打一个MBProgressHUD进去 然后在项目中引入这个静态库,尝试在项目中引入MBProgressHUD 造成duplicate symbol 错误,然后运行脚本 裁剪库后修改库名 再次运行,项目能跑通 代表裁剪成功...
iOS开发中,第三方库的使用可以极大地提高开发效率和应用功能的丰富性。本知识点将详细介绍iOS开发中常用的第三方库文件,它们分别涵盖了富文本处理、图像音频处理、数据库、聊天、摄像拍照、网络请求和动画等多个...
在这个场景中,我们将深入探讨如何在iOS应用中实现QQ、微信和微博的第三方登录授权。 首先,我们需要导入必要的SDK。QQ、微信和微博都有为开发者提供的官方SDK,这些SDK包含了与它们服务进行交互所需的全部接口。...
包含常用的第三方库,AFN,EGO缓存,循环滚动Scrollview,MJRefresh,自己封装的网络状态判断(包括2g,3g,4g,wifi),自定义的选择器PickView(plist,数组都可以),二维码条形码扫描Scan,照片上传UploadPhoto...
测试环境CentOS 7和Ubuntu 16.04,均可以正常生成对应库,GitHub工程至包含一个测试demo,可以执行将生成的库替换掉对应的版本,然后修改Android的ABI,编译后使用模拟器和手机安装均可正常运行
这个压缩包很可能包含了一个这样的库,可能是一个CocoaPods项目,这是一种在iOS开发中管理和集成第三方库的流行方式。 轮播图的常见功能包括: 1. **自动播放**:轮播图可以设置自动切换图片,间隔时间可自定义。 ...
6. **配置Xcode项目**:在Xcode中,将第三方SDK的库文件(通常是.a静态库或.framework框架)添加到项目中,并确保设置好依赖项和搜索路径。同时,将桥接头文件(LsSdkConector.h)和实现文件(LsSdkConector.m)也...
在iOS开发中,第三方库和框架的使用是十分常见的,它们可以帮助开发者快速、高效地实现各种功能。这个压缩包“包含ios开发的第三方包”显然提供了几个关键的工具,包括JSON对象的转换、百度地图SDK、网络请求类以及...