在iOS开发过程中,我们往往会用到大量的第三方库,比如ASIHTTPRequest、CocoaAsyncSocket、JsonKit等等。如果手动添加这些第三方库,往往费时费力,还容易出错。今天介绍的Cocoapods会让我们使用和管理第三方库非常方便和高效。
手动添加第三方库,首先需要把库的相关文件复制到项目中,然后需要手工地将一些framework添加进去,比如ASI网络库就需要添加以下framework:
CFNetwork.framework,
SystemConfiguration.framework
MobileCoreServices.framework
CoreGraphics.framework
libz.dylib
安装cocoapods简单,安装前请确保下列条件满足
一般Ruby都自带了,然后输入下面命令(可能需要root权限)
$ gem installcocoapods
$ pod setup
安装后,在终端输入pod,会显示下面信息,表明安装成功
接下来我们以使用CocoaAsyncSocket这个库为例子来演示cocoapods的用法。
我们新建一个single view工程,取名叫做PodsDemo
然后我们关闭工程,cd到工程所在目录,建立一个Podfile文件,如下图
然后在这个文件内输入下面内容
保存文件,接着在终端输入pod install
从现在开始,打开工程就不要在打开PodsDemo.xcodeproj,而是打开PodsDemo.xcworkspace。我们执行open PodsDemo.xcworkspace
编译运行没有一点问题,之后你就可以放心的在项目里面使用这个库了,不用担心ARC的设置问题了,比如CocoaAsyncSocket库本身是ARC模式的,但是我们的工程不是ARC模式的,cocoapods会自动帮我们设置好CocoaAsyncSocket库源文件的编译标志,如下图所示。
如果以后要在工程里面添加新的库,只需要在Podfile文件里面添加新的pod ‘libname’就可以了,然后执行podupdate就OK了!
优势
1、不需要我们从网上下载库,会自动下载。
2、不需要我们手动拷贝到工程然后设置,都是自动设置的。
3、可以随时更新,只要网络上的库更新了,一个pod update就完成更新了。
4、其实我们自己的工程最终依赖的是libPods.a,所有的第三方库最终都将编译进我们的这个文件中。方便我们专注自己的代码
5、我们从此以后不用操心ARC转换问题,好多库现在默认都是ARC的,我们的工程往往是非ARC的,使用这个工具后,自动替我们设置好了相应的编译标志,从而避免我们人为设置标志漏掉源文件从而造成内存泄露。
劣势
缺点是,可能非常小众的库需要我们手动配置它的podspec文件。