您的位置:首页 > 移动开发 > IOS开发

iOS之常用第三方库的介绍

2016-04-28 17:29 316 查看
因为iOS SDK相对比较底层,所以开发者就得受累多做一些体力活。不过幸运的是,有很多第三方的类库可以用来简化很多不必要的工作。


(1)AFNetworking

目前比较推荐的iOS网络请求组件,默认网络请求是异步,通过block回调的方式对返回数据进行处理。

需要注意的是AFNetworking对服务器返回的ContentType要求比较严格,默认只支持application/json的返回。所以可能需要添加对text/html返回的支持,否则可能无法获得返回数据。

另外就是文件上传,这里推荐使用第二种:

[formData appendPartWithFormData: name:];

[formData appendPartWithFileData: name: fileName: mimeType:];

第一种只需要传入表单名和文件流,源码也是根据文件流获得对应的文件名和文件类型,然后调用第二种方法。但是楼主遇到了使用第一种方法,提交后后台判断为非文件上传,无法获得文件流。还有如果后台是根据文件后缀文件类型,那么第一种也无法使用。

AFNetworking是异步的,也可以使用同步的网络请求方法.

(2).FMDB

对sqlite数据库操作进行了封装,demo也比较简单。

(3).MBProgressHUD

也是iOS项目常用的一个组件,用于显示过渡效果的,比如网络请求之前显示loading,网络结束隐藏loading。建议封装在BaseViewController中,所有ViewController继承就能使用。

(4).MJRefresh

这个是李明杰老师的作品,自己的OC基础就是看他的视频半个周末就基本拿下了。MJRefresh主要用于刷新操作,提供了常用的刷新操作,还有刷新动画,用着很好用。建议把方法封装在BaseViewController中,这样修改刷新操作时,就只需要改动一份。(之前用的旧版MJRefresh,只支持普通的刷新,不支持动画,后来更新后版本变化比较大,旧的方法已经不推荐使用了,所以还是封装基类中使用比较好,方便以后修改)

(5).SDWebImage

也是iOS最常用的一个组件,用户加载网络图片,可以缓存到本地。大概原理时,第一次加载后,会根据url加密作为文件名缓存在本地,如果再次加载图片时,就直接从本地加载。用着也比较简单。这里也分享遇到的一个问题,先从网络加载一张小图,然后小图作为占位图,再从网络加载一张大图。

[imageView sd_setImageWithURL:[NSURL URLWithString:imageURLString] placeholderImage:DefaultPostPic];
[imageView sd_setImageWithURL:[NSURL URLWithString:_bigImageURLStringArray[i]] placeholderImage:imageView.image options:SDWebImageDelayPlaceholder completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
}];


(6).RDVTabBarController

一个TabBar组件,可以方便设置底部菜单的文字图片,点击效果,小红点提示等。

(7).Toast

类似android的toast提示效果,封装在BaseViewController中,需要的地方进行提示。

(8).XMPPFramework

iOS唯一的xmpp类库,作者在添加了xep-0198协议支持(流管理,用于xmpp断线重连)

(9).TPKeyboardAvoiding

用户键盘弹出自动计算高度,进行屏幕滚动操作。

(10).AMR

做即时通讯的音频处理,目前我们的即时通讯使用的录音文件是m4a,便于web端的音频播放。

(11).TQRichTextView

用于做富文本视图控件显示,用于即时通讯的表情显示,以及资源评论的富文本显示。

(12).CSGrowingTextView

用作即时通讯文本框和评论文本框使用,可以显示多行输入。

(13).MJExtension

也是李明杰老师的作品,用于json转model进行使用,有点类似于java中谷歌的Gson。转换效率据说也很高,使用也比较简单,只要前后台约定好,json直接就转成了model。一个工作多年的iOS朋友说,一个项目主要的是对model层的管理,他推荐的是Mantle。不过MJ这个更轻量级点,用着也更加简单

(14).Masonry

Masonry是一个轻量级的AutoLayout布局框架. 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Max OS X。

(15).CorePlot

与苹果公司的Core Animation, Core Data, and Cocoa Bindings的技术紧密结合,可以绘制柱状图,折线图,饼图等多种图形,基本可以满足OS X和iOS平台上的大部分绘图需求。

(16).XMPP

现在做个实时聊天,XMPP协议算是很成熟的方案了。XMPPFramework一个很不错的选择,可以直接和OpenFire服务器打交道。项目不大人手不多的话,可以看看这个。

(17).SSToolkit

SSToolkit算是一个不错的工具包,提供各种比如编码、加密、字符串处理等等东西,还提供了一些不错的自定义控件,作者将他在App中实现的各种各样的UI效果做成个代码库,方便其他人使用,并且文档非常齐全。。

(18).GPUImage

GPUImage是一个基于GPU图像和视频处理的开源iOS框架,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜; 基于GPU的图像加速,因此可以加速对实时摄像头视频、电影以及image的滤镜和其它效果处理,并且能够自定义图像滤镜。另外, GPUImage支持ARC。

(19).RegexKitLite

在IOS应用中,经常要输入数据,然输入数据,就要校验数据的合法性,这是我们很自然的联想到web应用中的正则表达式。然而Cocoa并未支持正则表达式。这是我们可以使用第三方工具(RegexKitLite)来实现正则表达式。

cocopods

CocoaPod并不是iOS上的第三方库 而是大名鼎鼎的第三方库的管理工具,在CocoaPod没有出现之前 第三方库的管理是非常痛苦的 尤其是一些大型的库(比如nimbus) 每次对库进行更新 都可能会非常的痛苦CocoaPod的出现解决了这些问题 ,以Framework的方式引入第三方库,极大的节约了集成的时间 而且通吃Objective-C和Swift(Swift上的Cathatage我没有实际用过 但是它的那种集成方式还是比CocoaPod麻烦点)对于一个语言的流行伴随着的就是第三方库的丰富,相应的也会出现依赖库管理的工具。cocoapods之于ObjC,就像maven/gradle 之于java、gem之于ruby那样,cocoapods基本上是创建在在github社区上的,开源并且社区活跃。

关于第三方库,同样不推荐过多使用,如下:

1、消耗时间,一个开源库,拿过来需要仔细考察代码质量,确认是否足够可靠。如果出现问题,需要仔细审查开源库的内部实现。如果这些工作太消耗时间,还不如自己实现。

2、可维护性差。一旦遇到系统升级、API更换,第三方库不能确保不出问题。当出问题后也难以找到人来维护。如果跟进第三方库的改变,仍然容易出现新问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: