protobuf3 iOS 接入 protobuf

来源:互联网 发布:麦克数据 编辑:程序博客网 时间:2024/05/18 13:25

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);
0 0
原创粉丝点击