为什么要采用模块化方式进行开发
模块化开发的优势:
1.最为重要的一个优势在于便于各个子模块的管理,将子模块的变化限制在该模块之内,模块变动不影响主模块或其他模块,并且能够轻易的回退到子模块的某个版本上去。
2.大幅减少合并工程耗费的时间,减少合并.xcodeproj时产生的冲突。
3.每个模块可以打包成独立的App,一旦一个模块开发完成,能够及早交付测试人员进行测试,这样既提高了测试人员和开发人员之间的协作效率,又提高了项目交付的质量。
4.在各个子模块之间通过基于URL的方式进行跳转和调用,实现了一定程度上的解耦。
安装CocoaPods
CocoaPods是一个Ruby Gem,因为直接访问RubyGem速度非常慢,建议先替换成淘宝镜像
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
安装CocoaPods
$ sudo gem install cocoapods
管理第三方库
创建Podfile
在项目根目录下创建Podfile,下面是一个Podfile的例子:
platform :ios, '9.0'
target "MyApp" do
pod 'AFNetworking'
end
platform: 可以指定平台的信息和deployment target的版本
target: 可以根据不同的target来引入不同的pod
pod: 引入依赖库
pod 'AFNetworking' -- 引入最新版本
pod 'AFNetworking', '0.9' -- 引入特定的版本
pod 'AFNetworking', '>0.9'> -- 任何大于0.9的版本
pod 'AFNetworking', '>=0.9'> -- 任何大于等于0.9的版本
pod 'AFNetworking', '<0.9'> -- 任何小于0.9的版本
pod 'AFNetworking', '<=0.9'> -- 任何小于等于0.9的版本
pod 'AFNetworking', '~>0.9'> -- 任何介于0.9到1.0的最新版本,不包含1.0
pod 'AFNetworking', :path => '~/Documents/AFNetworking' -- 使用本地路径引入
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0' -- 使用git库引入
pod 'JSONKit', :podspec => 'https://example.com/JSONKit.podspec' -- 使用外部的podspec来引入
安装Pods
安装pods
$ pod install
更新pods
$ pod update
install和update的区别:假如使用 pod 'SVProgressHUD',没有指定版本。使用pod install,如果Pods中存在SVProgressHUD,则直接使用。使用pod update,则会保证更新SVProgressHUD到最新版本。
install或update速度通常很慢,因为每次执行的时候都需要同步一下CocoaPods Specs,这个有几百兆的大小,同步一次非常耗时。所以如果你使用的第三方库并不是经常更新,则不用经常更新那个Specs库。可以使用以下命令:
$ pod install --verbose --no-repo-update
$ pod update --verbose --no-repo-update
执行完install或者update命令后,就可以使用.xcworkspace打开项目。