记录ios第三方开源库,有的是用过的,有的是看别人说好用的,备忘一下。
HTTP
ASIHTTPRequest:使用者多,已停止维护。
AFNetworking:轻量,易用,使用者多,维护积极,AFN适合逻辑简单的应用
两者对比:文件越大,ASI传输速度越快于AFN。
Sockket
CocoaAsyncSocket:支持异步TCP/UDP,支持GCD,Objective-C接口封装
JSON
SBJson:性能稍差
JOSNKit:性能很高,文件少。
NSJSONSerialization:官方API
XMPP
XMPPFramework:可以直接和OpenFire服务器打交道。
基础工具类
SSTookit:提供例如编码,加密,字符串处理等,自定义控件,文档齐全
框架
three20:太大,文档少
nimbus:文档齐全。
BeeFramework:国产MVC框架,
数据存储
SQLite:
fmdb:封装SQLite
MagicalRecord:封装CoreData
图像处理
GPUImage:
开发和调试工具
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
MurmurHash
libpng
zlib
SBJson (json-framework)
libpng
zlib
SBJson (json-framework)
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,就造成上面这种比较混乱的库依赖关系。这就造成难以维护、代码冗余等问题了。所以,引入一个第三方库一定要慎重考虑,如果可能,尽量自己开发和实现相应的功能,第三方库尽量只作为参考。 小团队或者个人开发者可以不必过多考虑,开发速度优先。