1.Protocol Buffers简介(What are protocol buffers?)
Protocol buffers
是Java
、C#
、C++
、Go
、Python
和Objective-C
,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用XML
、JSON
进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
2.环境集成
2.1安装工具包(使用brew安装)
$brew install autoconf
$brew instal automake
$brew install libtool
2.2配置并生成protoc文件
在github链接页面上找到protobuf-objectivec-3.7.0.tar.gz或protobuf-objectivec-3.7.0.zip,下载并解压到本地,cd
到protobuf-3.7.0
目录下执行以下命令:
$ ./autogen.sh
$ ./configure
$make
$make check
$ sudo make install
安装完成之后,创建.proto
文件,如Person.proto
,复制如下代码
syntax = "proto3";
message Person {
int32 age = 1;
string username = 2;
string phone = 3;
}
cd
到Person.proto
文件所在的目录并执行命令,生成Person.pbobjc.h
和Person.pbobjc.m
(注意:此文件拖进工程之后,默认只支持mrc
,需要到build phases
找到该文件并添加-fno-objc-arc
)
$protoc --objc_out=./ ./Person.proto
3.使用
3.1 使用CocoaPods集成
在工程中生成Podfile文件并添加
pod ‘Protobuf’, ‘~> 3.1.0’
$pod install
3.2将生成的.h
、.m
文件拖入工程并使用
Person *person = [[Person alloc] init];
person.age = 100;
person.username = @"JK";
person.phone = @"10086";
NSData *data = [person data];
Person *p = [Person parseFromData:data error:nil];
NSLog(@"person:%@",p);
输出
2019-03-08 11:06:29.478003+0800 ProtobufDemo[76904:1485854] person:<Person 0x600002903950>: {
age: 100
username: "JK"
phone: "10086"
}