`
dcj3sjt126com
  • 浏览: 1881661 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • IOS
阅读更多
转自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。除此之外,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对第三方库的依赖。
 
网易新闻
 
Garageband
MurmurHash
libpng
zlib
SBJson (json-framework)
 
iWork三套件
 
Pinterest
 
多看阅读
 
淘宝
 
微信
 
QQ
ASIHTTPRequest
FMDB
CocoaAsyncSocket
JSONKit
MBProgressHUD
OpenUDID
SBJson
SVPullToRefresh
 
百度地图
 
微博
 
人人
可以看到,这些大型的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 视频音频第三方

    标题提到的“iOS 视频音频第三方”很可能是指一个集成视频和音频处理功能的框架或库,可能是开源的,方便开发者集成到自己的应用中。描述中提到的“封装得特别好”,意味着这个库可能具有良好的API设计,易于理解和...

    iOS 第三方分享源码

    本资源提供了iOS第三方分享的源码,这对于开发者来说是一个很好的学习和参考材料。 首先,我们需要理解iOS中的分享机制。iOS提供了一个内置的框架叫做Social Framework,它支持Facebook、Twitter以及Sina Weibo等...

    iOS第三方登录之TwitterDemo

    iOS第三方登录之Twitter(登录,获取用户信息)

    ios 视频播放第三方(KrVideoPlayerPlus-master)

    本文将详细介绍“ios 视频播放第三方(KrVideoPlayerPlus-master)”这一开源项目,以及它如何帮助开发者实现视频播放,包括小窗口播放和全屏播放。 **1. KrVideoPlayerPlus介绍** KrVideoPlayerPlus是一款适用于...

    IOS常用第三方库

    ios常用第三方库:ASIHTTPRequest MBProgressHUD SBJson SDWebImage CorePlotHeaders utility工具

    iOS常用开源库列表

    ### iOS常用开源库详解 #### 一、网络请求:HTTP处理 **1.1 AFNetworking** - **简介**:AFNetworking 是一个非常流行的 iOS 和 Mac 网络通信库,它基于 `NSURLConnection` 和 `NSURLSession` 构建,提供了简单易用...

    常用ios第三方库集合

    本资源包“常用ios第三方库集合”包含了一些常用的iOS开发框架,让我们逐一探讨这些库的重要性和使用方法。 首先,我们看到的是`QFRequest`,它包含`QFRequest.h`和`QFRequest.m`两个文件,这很可能是自定义的一个...

    iOS二维码--第三方库 libqrencode、ZBarSDK

    本主题将详细探讨两个常用的第三方库——libqrencode和ZBarSDK,它们分别用于生成二维码和扫描二维码。 首先,libqrencode是一个开源的二维码编码库,支持多种数据类型,包括ASCII文本、URL、电话号码等。在iOS项目...

    常用iOS第三方库以及XCode插件介绍.pdf

    在iOS开发领域,利用第三方库和XCode插件是提升开发效率、丰富应用功能的重要手段。随着开源文化的普及,许多优秀的库和工具在GitHub上获得了广泛的使用和认可。在这些资源中,针对iOS平台的工具和库尤其受到开发者...

    iOS第三方开源类库 -- 视图切换 HMGLTransitions

    HMGLTransitions是一款优秀的第三方开源类库,专门用于实现各种炫酷的视图控制器间过渡效果。开发者杜信峰在CSDN博客上对此有详尽的介绍,其分类链接为`...

    ios开发 常用第三方框架

    在iOS开发中,引入第三方框架可以极大地提升开发效率和应用质量。本篇文章将重点讨论“ios开发 常用第三方框架”中的一个具体实践:在UITableView中实现数据刷新时的header和footer动画,同时也会涉及与之相关的网络...

    ios的第三方框架的demo

    在iOS开发中,第三方框架是由开发者或社区创建的库,它们提供了预封装的功能和服务,以供其他开发者在自己的项目中使用。这些框架通常通过CocoaPods、Carthage或Swift Package Manager等包管理器进行安装和管理,...

    ios 裁剪第三方库脚本

    验证方法是自己做个静态库 ,打一个MBProgressHUD进去 然后在项目中引入这个静态库,尝试在项目中引入MBProgressHUD 造成duplicate symbol 错误,然后运行脚本 裁剪库后修改库名 再次运行,项目能跑通 代表裁剪成功...

    ios 最全的第三方库.pdf

    iOS开发中,第三方库的使用可以极大地提高开发效率和应用功能的丰富性。本知识点将详细介绍iOS开发中常用的第三方库文件,它们分别涵盖了富文本处理、图像音频处理、数据库、聊天、摄像拍照、网络请求和动画等多个...

    IOS app客户端第三方登录授权

    在这个场景中,我们将深入探讨如何在iOS应用中实现QQ、微信和微博的第三方登录授权。 首先,我们需要导入必要的SDK。QQ、微信和微博都有为开发者提供的官方SDK,这些SDK包含了与它们服务进行交互所需的全部接口。...

    iOS常用第三方库

    包含常用的第三方库,AFN,EGO缓存,循环滚动Scrollview,MJRefresh,自己封装的网络状态判断(包括2g,3g,4g,wifi),自定义的选择器PickView(plist,数组都可以),二维码条形码扫描Scan,照片上传UploadPhoto...

    Android和IOS第三方.so或.a编译方式

    测试环境CentOS 7和Ubuntu 16.04,均可以正常生成对应库,GitHub工程至包含一个测试demo,可以执行将生成的库替换掉对应的版本,然后修改Android的ABI,编译后使用模拟器和手机安装均可正常运行

    ios-超级好用的第三方轮播图(滚动图).zip

    这个压缩包很可能包含了一个这样的库,可能是一个CocoaPods项目,这是一种在iOS开发中管理和集成第三方库的流行方式。 轮播图的常见功能包括: 1. **自动播放**:轮播图可以设置自动切换图片,间隔时间可自定义。 ...

    unity3d ios平台,接入第三方sdk

    6. **配置Xcode项目**:在Xcode中,将第三方SDK的库文件(通常是.a静态库或.framework框架)添加到项目中,并确保设置好依赖项和搜索路径。同时,将桥接头文件(LsSdkConector.h)和实现文件(LsSdkConector.m)也...

    包含ios开发的第三方包

    在iOS开发中,第三方库和框架的使用是十分常见的,它们可以帮助开发者快速、高效地实现各种功能。这个压缩包“包含ios开发的第三方包”显然提供了几个关键的工具,包括JSON对象的转换、百度地图SDK、网络请求类以及...

Global site tag (gtag.js) - Google Analytics