常用iOS的第三方框架

这篇博客介绍了iOS开发中常用的第三方框架,包括图片浏览、HTTP网络通信、Socket、JSON解析、数据存储等方面,提到了如MWPhotoBrowser、AFNetworking、CocoaAsyncSocket、JSONKit、FMDB等热门库,并探讨了引入第三方库时应考虑的因素和大型App的库依赖问题。
摘要由CSDN通过智能技术生成
图像:
1.图片浏览控件MWPhotoBrowser 
      实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存。可对图片进行缩放等操作。
      下载:https://github.com/mwaterfall/MWPhotoBrowser

目前比较活跃的社区仍旧是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
 
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,就造成上面这种比较混乱的库依赖关系。这就造成难以维护、代码冗余等问题了。所以,引入一个第三方库一定要慎重考虑,如果可能,尽量自己开发和实现相应的功能,第三方库尽量只作为参考。 小团队或者个人开发者可以不必过多考虑,开发速度优先。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2014年8月7号新增
系统基础库
Category/Util
 sstoolkit    一套Category类型的库,附带很多自定义控件 功能不错~    
    
 BlocksKit    将Block风格带入UIKit和Founcation    
    
 cocoa-helpers    一些Cocoa的扩展 2年前的工程    
    
 CoconutKit    一系列扩展和一些自定组件    
    
 STUtils    一系列扩展包    
    
 PSFoundation    一系列扩展 和功能增强    
    
 ConciseKit    一系列宏定义 挺有意思    
    
 DTFoundation    又一系列扩展。。。    
    
 BBBootstrap    一些常见功能的扩展库    
    
 cooliris-toolkit    cooliris出品的基础工具库,从GoogleCode clone过来    
    
 BaseKit    一套基础工具库    
    
 NSObject-Utility-Categories    如题    
    
 NSArray-Utilities    如题    
    
 aqtoolkit    一些常用的东西    
    
 DLIntrospection    一些NSObject的扩展    
    
 NSDate-Extensions    如题日期    
    
 ALActionBlocks    在UIControl上添加的Block事件    
    
 jrswizzle    主要是swizzling    
    
 moriarty    一些还算有用的功能    
    
 QSUtilities    一些基础库 (Instagram有用到)    
    
 libextobjc    一堆oc的扩展    
    
 PrettyTimestamp    友好时间的扩展    
    
 ios-jail-break-detector    检测是否越狱 有上线    
    
 crackify    检测App是否被破解    
    
 NSBundle-OBCodeSigningInfo    检查当前签名、Sandbox状态 MacOSX    
    
 UIView-AnimatedProperty    为UIView添加动画效果的property,有用到swizzle    
    
 Block-KVO    Block风格的KVO~    
    
 MTDates    一些Data的category    
    
 CocoaSecurity    常见的哈希、加密解密算法    
    
 sskeychain    访问keychain 支持iOS Mac    
    
 ABContactHelper    访问联系人    
    
 UISS    用JSON的风格设置UIKit样式    
    
 Underscore.m    仿JS的underscore.js来写的,用于访问和处理数据    
    
 TICoreDataSync    在不同设备间对CoreData进行同步 (iPhone iPad Mac)    
    
 SoloComponents-iOS    几个轻量的组件,没什么用,2年没更新    
    
 MAObjCRuntime    将运行时包装成ObjC    
    
 Objective-C-Generics    通过宏定义勉强实现的范型    
    
 TBMacros    一些常用的宏定义    
    
 NSString-Ruby    为Ruby程序员带来的字符串相关功能    
    
 ObjectiveRecord    CoreData包装的活动记录 有RoR风格的API    
    
 FastImageCache    滑动时快速显示图片的库,Path开发    
    
基础功能
 mediaextract    纯C的一些常用媒体文件的解析读取    
    
 objection    一个估计是java ee写多了的人搞的。。注解依赖注入xx工厂之类的    
    
 Typhoon    IoC容器啊~~    
    
 HTKit    一票乱七八糟的东西    
    
 StringScore    模糊匹配字符串 查找某两个字符串的相似程度    
    
 RegexKitLite    正则表达式库 (从SF.net mirror过来)    
    
 FormatterKit    一个NSString的格式化工具    
    
 TMCache    一个内存Cache    
    
 EGOCache    EGOImage里面的 Cache功能    
    
 HJCache    一个缓存网络内容等的Cache    
    
 RNCryptor    加密解密相关 貌似更上流, note:去看一下他博客    
    
 ssziparchive    zip压缩 zip解压~    
    
 ZipKit    一个ZipKit 从bitbucket Mirror过来    
    
 ZipKit    如同ZipKit 改为ARC了    
    
 zipzap    Zip文件处理 底层为libz    
    
 MTMigration    版本升时执行一次    
    
 MTControl    jQuery风格touch事件绑定    
    
 storage    快速、线程安全的I/O存储操作    
    
 CHCSVParser    CVS文件解析    
    
 YLMoment    日期的解析,格式化等,支持多语言    
    
 CMUnistrokeGestureRecognizer    各种奇怪的手势检测    
    
 EKAlgorithms.git    常见算法的ObjC实现,包括排序、查找、数组、字符串、常用数据结构..    
    
框架/封装
 three20    一个曾经用得广泛的庞大的iOS开发框架 已不再维护    
    
 nimbus    three20替代品 又一个庞大的框架    
    
 BeeFramework    一个基于MVC的框架, 比较大..    
    
 OmniGroup    一套很庞大的库(OmniGroup) 支持Mac和iOS 更新迅速    
    
 ReactiveCocoa    一套响应式编程的框架(Functional Reactive Programming) 支持Mac    
    
 WebViewJavascriptBridge    WebView和Cocoa之间的事件传递    
    
 OCUDL    自定义literals 有点意思~~    
    
 Kiwi    一个Behavior驱动编程框架? (BDD)?    
    
 Mantle    一个Model层, 替代CoreData 可以生成Model对象~ Github官方出品..    
    
 MagicalRecord    CoreData的包装 简化代码    
    
 fmdb    SQLite的封装    
    
 KZPropertyMapper    一个Model的封装,类JSON    
    
 BlockInjection    为某个方法注入一个Block 类似AOP    
    
 NSObject-ObjectMap    JSON和XML包装到Object    
    
 Ejecta    通过OpenGL OpenAL来实现 WebCanvas JS等,很庞大~    
    
 FCModel    为SQL程序员包装一下CoreData    
    
功能/封装
 iOS-System-Services    获取各种设备信息 包括硬件、网络、内存、进程等等    
    
 MKStoreKit    iAP用的库    
    
 CargoBay    一个包装iAP StoreKit的库    
    
 RMStore    很轻量的iAP包装    
    
 QuincyKit    处理crach信息的库 只有上架应用才能用 支持Mac    
    
 OpenUDID    系统UDID替代方案    
    
 UIDevice-with-UniqueIdentifier-for-iOS-5    另一个UUID解决方案 但iOS7不能用了    
    
 uidevice-extension    一系列UIDevice的扩展 有PrivateAPI 最新的工程在cookbook-code里    
    
 InAppSettingsKit    包装了设置、URLScheme、Mail、Icon等东西    
    
 DTWebArchive    允许访问剪贴板中的WebArchive格式富文本    
    
 routable-ios    inApp的URL定义 在App内打开自定义URL (解耦)    
    
 JLRoutes    复杂的URL Scheme解析和路由    
    
 Emoji    访问Emoji图片的功能    
    
 PDKeychainBindingsController    以类似UserDefault的方式访问Keychain    
    
 CoreTextWrapper    一个CoreText库的包装    
    
 Slash    对AttributeString的封装    
    
 iHasApp    检测某个App是否安装,集成了常见的URL Scheme    
    
网络
基础
 AFNetworking    很棒的HTTP网络通信库    
    
 asi-http-request    一个HTTP库 同样很知名 性能好,稳定 但已不再维护    
    
 MKNetworkKit    一个HTTP库 支持Mac 同样也不错    
    
 STHTTPRequest    一个非常简单的http库,包装了NSURLConnection    
    
 RestKit    一个HTTP库 用来与RESTful的服务进行交互    
    
 AFIncrementalStore    用CoreData和AFNetworking 将HTTP数据持久化    
    
 CocoaAsyncSocket    TCP/UDP包装库 支持Mac 很棒    
    
 Reachability    判断设备网络情况 和苹果的很像 用ARC、GCD    
    
 SDReachability    判断设备网络情况 和苹果的很像,更友好?    
    
 socket.IO-objc    支持HTTP 长轮询 socket.io    
    
 DTBonjour    Bonjour和Wifi    
    
 XMPPFramework    XMPP客户端的库~ 支持Mac    
    
 CocoaHTTPServer    一个轻量的HTTP Server 支持Mac    
    
 SocketRocket    WebSocket客户端~    
    
 MailCore    IMAP SMTP邮件协议    
    
JSON
 JSONKit    性能非常好 (只比Apple原生的差一点)    
    
 json-framework    SBJson 曾经用得很广泛的JSON 性能差    
    
 TouchJSON    又一个JSON库    
    
 yajl-objc    一个JSON库 可以支持流解析 支持Mac    
    
 JSONModel    一个构建JSON Model的工具和库    
    
XML/Html
 MWFeedParser    Feed/Atom解析    
    
 RSSKit    RSS Atom解析    
    
 ElementParser    提供Html和XML的解析    
    
 hpple    提供Html/XML解析    
    
 Objective-C-HMTL-Parser    一个很简单的HTML解析 包装了下libxml    
    
 RaptureXML    一个简单的XML解析器 包装了libxml    
    
 KissXML    解析XML的库 包装了libxml    
    
 TBXML    快速解析xml的库    
    
 xmldocument    又一个解析XML的库    
    
 XMLDictionary    蛮好用的一个XML转NSDictionary的类~    
    
 XML-to-NSDictionary    XML转NSDictionary    
    
 MMMarkdown    一个渲染Markdown到HTML的小引擎    
    
 Ashton    在NSAttrbuteString和Html之间转换    
    
 XMLParser    XML解析成json~    
    
功能性
 EGOImageLoading    下载使用网络图片的库    
    
 SDWebImage    异步加载网络图片 (UIImage Category)    
    
 TCBlobDownload    下载大文件/ 断点续传    
    
 GroundControl    一个通过远程plist改变配置的库    
    
 appirater    提醒用户稍后到AppStore给你评分的功能    
    
 iRate    类似appirater 提醒用户稍后到AppStore评分 支持Mac    
    
 ShareKit    分享到国外的一些社交网站 的功能 用的的人挺多    
    
 Harpy    新版本更新提醒    
    
 iVersion    新版本更新提醒 功能提示    
    
 DataKit    以类似CoreData的Model 来获取网络资源    
    
 SDURLCache    URL缓存    
    
 objective-git    libgit的包装 挺庞大    
    
 nsrails    RoR风格的网络交互API    
    
SDK
 facebook-ios-sdk    Facebook的SDK    
    
 MGTwitterEngine    一套Twtter库    
    
 Twitter-OAuth-iPhone    Twitter的OAuth功能    
    
 Foursquare-API-v2    Foursquare的库    
    
 objectiveflickr    Flicker API    
    
 octokit.objc    Github的API    
    
 ParcelKit    Dropbox封装CoreData    
    
 cocoalibspotify    spotify官方SDK    
    
 GDFileManagerKit    访问 dropbox GDrive之类的云存储    
    
音频
 iOSSystemSoundsLibrary    列出和播放iOS系统声音~    
    
 novocaine    一个声音库 录音放音 页面上有CoreAudio的教程链接    
    
 TheAmazingAudioEngine    一个声音库 包装了CoreAudio    
    
 AudioStreamer    音频流播放库 支持Mac    
    
 SimpleAudioEngine    一个简单的播放声音的库    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值