protobuf3 iOS 接入 protobuf

protobuf是一种可扩展的数据格式.它不依赖语言,平台.相比xml格式,它更小,更快,更简单.这种语言目前支持了java,php,c++等多种语言,可以根据官网教程使用该数据格式.本文主要讲述object-c的接入.这是最近官方支持的语言,以前更多的是使用c++或者第三方的库导入object-c项目中使用.本文会对object-c的使用做简单介绍,后面的文章会有一些分析.

1.引入官方基础pod

谷歌将protobuf需要使用的基础类封装成了一个pod,因此可以直接安装该pod,不必再手工导入.
如下:
pod "Protobuf", :git => "https://github.com/google/protobuf.git"
之所以设置git路径,是因为这样pod ‘Protobuf’, ‘~> 3.1.0’一直没有下载下来,所以直接使用了官网路径.

2.下载生成代码工具

a.安装protoc: brew install –devel protobuf 如果出现了下面的版本号,说明安装成功 ➜ ~ protoc --version libprotoc 3.0.0 关于protoc工具的使用请参考 https://developers.google.com/protocol-buffers/docs/proto3

b.另外一个方法是直接从github下载,自己编译一个protoc 链接:https://github.com/google/protobuf/tree/master/objectivec.编译完成后,
在protobuf/src下可以找到该工具

3.定义数据模型

syntax = "proto3";
package tutorial;
message SearchResponse {
  repeated Result results = 1;
}

message Result {
  string url = 1;
  string title = 2;
  repeated string snippets = 3;
}

将以上数据保存到Test.proto的文件中.

生成代码的命令为:
protoc –objc_out=tmp Test.proto
最后一个参数是定义的数据模型,生成的代码会写入objc_out对应的文件夹内.注意是两个短横杠

4.简单使用

  1. 直接将生成的代码拖入1创建的项目中,
  2. import相关头文件
  3. protobuf为了性能考虑,创建的都是mrc文件,因此在build phrases ->Compile
    sources中给拖入的文件添加 -fno-objc-arc的标志
   Result *res = [[Result alloc] init];
    res.title = @"11";
    NSLog(@"%@",res.description);

    //序列化
    NSData *data = [res data];

    //反序列化
    NSError *error;
    Result *res1 = [[Result alloc] initWithData:data error:&error];
    NSLog(@"%@",res1.description);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值