背景简介
如果你还不知道什么是protobuf,那么你应该去谷歌一下。protobuf是谷歌开源出来的一种数据交换格式。除了protobuf,用的比较的数据交换格式还有txt、XML、JSON。
直观的认识
table
name | age | gender |
---|---|---|
xiaogang | 12 | 1 |
xml
<xml>
<person>
<name> xiaogang </name>
<age>12</age>
<gender>1</gender>
</person>
</xml>
json
{
name : "xiaogang",
age : 12,
gender : 1
}
protobuf
0a087869 616f6761 6e67100c 1801
开始实践
Protocbuf 的使用涉及到三个部分配合
消息定义
syntax = "proto3";
message Person {
string name = 1;
int32 age = 2;
int32 gender = 3;
}
编译器
protoc 能够编译的程序 cpp, csharp, java, javasrcipt, objective-c, php, python, ruby, swift
protoc -I=$SRC_DIR --objc_out=$DES_DIR filepath
组装
项目中引入 protoc 的Objective-C的rumtime library
- 将objectivec 目录拷贝至项目根目录
- 项目中引入 ProtocolBuffers_iOS.xcodeproj
- 项目设置 Building Setting -> Iser Header Search path -> objectivec 路径
- 添加 编译生成的 源文件 Person.pbobjc.h Person.pbobjc.m
- 自己可以实例化话对象《=》序列化