一.ProtoBuf简介
ProtocolBuffer(简称Protobuf或PB)是由Google推出的一种数据交换格式,它可以很方便的把各个语言分支上的对象转换为二进制代码,然后进行数据交换。和JSON,XML这类文本格式不同的是,它可以直接按照约定的格式生成各个平台上的对象代码,免去了文本格式转换的各种困扰,并且转换效率非常快。
ProtocolBuffer主要由两部分组成:
PB基础库:完成对象--->二进制数据的序列化、二进制数据--->对象的反序列化这两个转换过程的支持。
PB编译器:源码生成器,将PB格式定义文件。proto(PB数据格式的一种定义文件)转换为对象源码(支持C++,JAVA,Python等格式)。
GitHub:https://github.com/google/protobuf
https://github.com/google/protobuf/tree/master/objectivec
二.ProtoBuf的使用
安装编译器
1.使用brew安装编译器到OSX中。
brew install automake
brew install libtool
brew install protobuf
2.或者直接下载protoc.bin到本机中。
3.或者直接将源码release版本下载下来,使用objective-c/DevTools/full_mac_build.sh
脚本会自动生成所以所需要的工具。最后生成src/protoc
命令。
为工程添加依赖库
1.使用CocoaPod添加ProtoBuf。
pod 'Protobuf', '~> 3.5.0'
2.或者将objetive-c/
目录下的工程添加到当前工程中。
书写proto文件
Test.proto:
import "ProtoBuffer.proto";
package com.test.protobuf;
message TestState{
enum Status{
IDLE = 0;
SCANNING = 1;
CONNECTING = 2;
CASTING = 3;
FAILED = 4;
}
required Status status = 1;
optional string errorMsg = 2;
}
可以在同一个package下生产不同的proto文件。
生成对象
protoc --plugin=/usr/local/bin/protoc-gen-objc Test.proto --objc_out="./"