使用Protobuf是因为其性能好,效率高。具体介绍可以参考谷歌官方文档https://developers.google.com/protocol-buffers/。
下面介绍如何安装使用Protobuf3.0及以上版本,编译生成OC代码,并在工程中正确使用。
安装Protobuf
从GitHub下载代码。https://github.com/google/protobuf。
直接clone就是最新的代码。当然也可以在clone时指定自己需要的版本。本文使用的是最新的代码,即Protobuf3.3.0。
下载完成后,使用终端,切换至protobuf所在的文件路径。
安装前需要先确认自己的MAC安装了autoconf和automake。如果没有安装可以直接通过命令行brew install autoconf
以及brew install automake
进行安装。其中brew是指HomeBrew,如果MAC没有安装HomeBrew,可以通过命令行/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
进行安装。
准备工作进行完后,就开始安装Protobuf。
还是先确认在Protobuf所在的文件目录下。然后按步骤执行* sudo ./autogen.sh
./configure
make
-
make install
此时protobuf就安装成功了。执行protocbuf --version
就可以看到安装的版本号了。
编译生成OC代码
创建proto文件。此处使用最简单的例子。创建User.proto。里面的内容是
syntax = "proto3";
message UserInfo {
required int64 id = 1;
required string name = 2;
}
然后使用终端切换到User.proto所在的文件夹路径。执行命令protocbuf User.proto --objc_out=./
。以上是最简单的生成OC代码的命令。执行完成后,会在当前文件夹生成User.pbobjc.h和User.pbobjc.m两个文件。到此生成OC代码的工作也完成了。
工程中使用生成的代码
在生成.h和.m文件后,把它们引入到自己的工程,如果此时直接编译会报错,原因是没有引入PB的文件。解决方法有两个:
- 使用Cocoapod,在podfile中添加
pod 'Protobuf'
注意大小写。然后pod install
再编译就可以了。这个方法简单方便。 - 如果不适用pod管理,就要把PB需要的文件手动引入到工程。具体文件在第一步Colne的protobuf/objectivec文件夹里面。而且还得注意如果工程是ARC时,要把部分PB文件置为
-fno-objc-arc
。具体设置参考GitHub文档https://github.com/google/protobuf/tree/master/objectivec
此时再次编译就OK了。使用方法也很简单
User *tom = [[User alloc] init];
tom.name = @"tom";
NSData *tomData = [tom data];