[iOS]ProtocolBuffer简介

1、什么是ProtocolBuffer

ProtocolBuffer是由Google开发的一种数据格式。这种格式与平台无关,可用于通讯协议,数据存储等。ProtocolBuffer跟我们常见的XML、json格式的数据比,传输更高效,并且体积更小。在RPC数据交换格式和数据存储领域,ProtocolBuffer具有先天的优势,因此得到很好的应用。

具体请google官方描述:戳这里

2、在iOS项目中使用ProtocolBuffer库

ProtolBuffer最新的版本是proto3,与老版本proto2还是有一定的区别。

在ProtocolBuffer中所有结构化的数据都被称为message。比如下面是在proto3版本下定义的消息:

syntax = "proto3";

message SearchRequest {
  string query = 1;
  int32 page_number = 2;
  int32 result_per_page = 3;
}

可以把上面的消息格式生成很多语言支持的类格式,比如:Java,Python、Go等等,具体请google关于描述:戳这里

关于在Mac上安装ProtocolBuffer,以及利用命令行生成.proto文件,并且生成Objective-C可用的.h和.m文件,在此不做描述,请读者自行google。

下面详细介绍在iOS工程中如何应用ProtocolBuffer库

2.1、下载ProtocolBuffer库

从github上下载:这里

2.2、引入项目

我是采用手工导入的方式加入ProtocolBuffer库的,当然你也可以采用CocoaPods导入。

  • 将objectivec目录下的*.h和*m添加到项目。注意:不包括:GPBProtocolBuffer.m。
  • 将objectivec/google/protobuf目录下的所有文件添加到项目。
  • 把上面提到的.proto文件对应生成的.h 和 .m文件拖到项目。
  • 点击project->Build Phases->Compile Source下的关于ProtocolBuffer库的所有.m文件添加:-fno-objc-arc标记。因为生成的类是非ARC的。

经过以上几步,基本上可以在iOS项目中编译成功了。如果读者遇到编译问题,可以自行google或者在评论区说出您的问题,欢迎交流。

3、测试ProtocolBuffer对象的序列化和反序列化

测试就比较简单了,下面是一个简单的例子:

NSLog(@"测试protolbuffer的序列号和反序列化");
MyMessage *mess = [[MyMessage alloc] init];
mess.version = @"1.0";
mess.userId = @"userId";
    
// 序列号
NSData *data = [mess data];

// 反序列化
MyMessage *p = [MyMessage parseFromData:data error:nil];
NSLog(@"\nversion:%@\nuserid:%@", p.version, p.userId);

可以看出,ProtocolBuffer的序列化是很简单的,只需要调一个data方法的就行,其他的都是ProtocolBuffer库帮我们实现了,同样反序列化也是一样,免除了我们之前做XML解析或Json解析的繁琐过程。一句代码搞定,简单、直接、高效!(完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值