iOS 统计三方库
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对第三方库的依赖。
网易新闻
Garageband
SBJson(json-framework)
iWork三套件
多看阅读
Skia(Google)
淘宝
SBJson (json-framework)
微信
ASIHTTPRequest
FMDB
CocoaAsyncSocket
JSONKit
MBProgressHUD
OpenUDID
SBJson
SVPullToRefresh
百度地图
微博
人人
可以看到,这些大型的App的依赖都很混乱,所以稍微解释一下。这些大公司都有一个iOS团队来协同开发,团队成员的水平也参差不齐。有时由于历史原因,例如某个App的某个组件依赖了ASIHttpRequest,但之后的新人改用了AFNetworking,就造成上面这种比较混乱的库依赖关系。这就造成难以维护、代码冗余等问题了。所以,引入一个第三方库一定要慎重考虑,如果可能,尽量自己开发和实现相应的功能,第三方库尽量只作为参考。 小团队或者个人开发者可以不必过多考虑,开发速度优先。
系统基础库
Category/Util
sstoolkit一套Category类型的库,附带很多自定义控件 功能不错~
BlocksKit将Block风格带入UIKit和Founcation
cocoa-helpers一些Cocoa的扩展 2年前的工程
CoconutKit一系列扩展和一些自定组件
STUtils一系列扩展包
PSFoundation一系列扩展 和功能增强
ConciseKit一系列宏定义 挺有意思
DTFoundation又一系列扩展。。。
BBBootstrap一些常见功能的扩展库
cooliris-toolkitcooliris出品的基础工具库,从GoogleCode clone过来
BaseKit一套基础工具库
aqtoolkit一些常用的东西
DLIntrospection一些NSObject的扩展
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-KVOBlock风格的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程序员带来的字符串相关功能
ObjectiveRecordCoreData包装的活动记录 有RoR风格的API
FastImageCache滑动时快速显示图片的库,Path开发