Google Protocol Buffers iOS使用举例(
2020-03-03 本文已影响0人
码农二哥
简介
Protobuffer是一个类似JSON的一个传输协议,其实也不能说是协议,可以认为是一种传输数据格式类似JSON,XML。但是比JSON更加轻量。消耗更小的带宽。
跨语言,这是它的一个优点。它自带了一个编译器,protoc,只需要用它进行编译,可以编译成JAVA、python、C++、OC代码。
安装
安装方式有两种,我最开始选择了比较笨的一种,先介绍比较简单的一种
简单
- 下载:参考链接:https://github.com/protocolbuffers/protobuf/releases
image.png - 编译:下载完成之后,进行解压,然后使用终端,进入到其解压文件下:
依次在终端中执行
# 前提是:使用brew按照工具链(xcode autoconf automake libtool)
$ ./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install # 这一步也可以不做,用的时候直接使用路径找就好
相对愚蠢的另一种
-
参考链接:https://github.com/protocolbuffers/protobuf按照官方文档操作
-
参考方法二其实比较简单
image.png -
我一个粗心,选择了方法一,参考链接:https://github.com/protocolbuffers/protobuf/blob/master/src/README.md
image.png
准备阶段(使用brew按照工具链):
-
下载代码编译:
image.png
使用
1 创建.proto文件person.proto
syntax = "proto3";
message Person {
int64 person_id = 1;
string person_name = 2;
string person_gender = 3;
string person_message = 4;
}
2 利用protoc的插件生成对应的.h与.m文件
protoc ./person.proto --objc_out=./
3 在工程中使用
- 新建一个工程,之后将Person.proto & Person.pbobjc.h & Person.pbobjc.m添加到工程
- 使用pod引用Protobuf
pod 'Protobuf';
- 编译:可能会报错,主要是因为生成的Person.pbobjc.m文件为MRC下使用,而我们的工程环境为ARC,所以需要配置该文件支持ARC环境。
- 如果有其他错误,继续解决即可(网上一搜一堆方案),可以看考:https://www.jianshu.com/p/c17260b36928
- demo
Person *person = [Person new];
person.personId = 1;
person.personName = @"Carson";
person.personGender = @"Male";
person.personMessage = @"I'm the best in the world !";
NSData *personData = [person data];
NSString *encodedBase64FromStr = [personData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
-
或者从这儿找一个可以运行的demo运行一下看看
image.png