iOS(macOS)中使用Google Protocol Buf

2019-03-08  本文已影响0人  Jecky丶

1.Protocol Buffers简介(What are protocol buffers?)

Protocol buffersGoogle 的一种数据交换的格式,已经在Github开源。它独立于语言,独立于平台。google提供了多种语言的实现:JavaC#C++GoPythonObjective-C,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 XMLJSON 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

2.环境集成

2.1安装工具包(使用brew安装)

$brew install autoconf

$brew instal automake

$brew install libtool

2.2配置并生成protoc文件

github链接页面上找到protobuf-objectivec-3.7.0.tar.gzprotobuf-objectivec-3.7.0.zip,下载并解压到本地,cdprotobuf-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;
}

cdPerson.proto文件所在的目录并执行命令,生成Person.pbobjc.hPerson.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"

}

有兴趣的同学可以去官方文档进行学习。
上一篇下一篇

猜你喜欢

热点阅读