一、简述
Protobuf 的优点
Protobuf 有如 XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。只需使用 Protobuf 对数据结构进行一次描述,即可利用各种不同语言或从各种不同数据流中对你的结构化数据轻松读写。
它有一个非常棒的特性,即“向后”兼容性好,人们不必破坏已部署的、依靠“老”数据格式的程序就可以对数据结构进行升级。这样您的程序就可以不必担心因为消息结构的改变而造成的大规模的代码重构或者迁移的问题。因为添加新的消息中的 field 并不会引起已经发布的程序的任何改变。
Protobuf 语义更清晰,无需类似 XML 解析器的东西(因为 Protobuf 编译器会将 .proto 文件编译生成对应的数据访问类以对 Protobuf 数据进行序列化、反序列化操作)。
使用 Protobuf 无需学习复杂的文档对象模型,Protobuf 的编程模式比较友好,简单易学,同时它拥有良好的文档和示例,对于喜欢简单事物的人们而言,Protobuf 比其他的技术更加有吸引力。
Protobuf 的不足
Protbuf 与 XML 相比也有不足之处。它功能简单,无法用来表示复杂的概念。
XML 已经成为多种行业标准的编写工具,Protobuf 只是 Google 公司内部使用的工具,在通用性上还差很多。
由于文本并不适合用来描述数据结构,所以 Protobuf 也不适合用来对基于文本的标记文档(如 HTML)建模。另外,由于 XML 具有某种程度上的自解释性,它可以被人直接读取编辑,在这一点上 Protobuf 不行,它以二进制的方式存储,除非你有 .proto 定义,否则你没法直接读出 Protobuf 的任何内容。
二、安装方法(很简单的)
1.第一步
让我们一起打开下面这个链接
https://github.com/alexeyxo/protobuf-objc
http://blog.csdn.net/yapianwan/article/details/19978149
http://nixwang.com/2015/03/18/protocol-buffer-for-ios/
在github上有protobuf-objc,其中的readme可以教会我们安装proto到咱们电脑里面。然后利用protoc,也就是protobuf的编译器可以编译.proto文件,生成一些.h和.m文件。
首先是怎么安装protobuf这个工程。
(摘抄一段来自https://github.com/alexeyxo/protobuf-objc的文档)
How To Install Protobuf
Building the Objective-C Protobuf compiler
Check if you have Homebrew
brew -v
If you don't already have Homebrew, then install it
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Install the main Protobuf compiler and required tools
brew install automake
brew install libtool
brew install protobuf
(optional) Create a symlink to your Protobuf compiler.
ln -s /usr/local/Cellar/protobuf/2.6.1/bin/protoc /usr/local/bin
Clone this repository.
git clone https://github.com/alexeyxo/protobuf-objc.git
Build it!
./build.sh
首先,打开终端!
brew -v
:查看你的mac里面有没有装brew。brew是mac os里面,类似于ubuntu的apt-get的功能,都可以直接在终端输入命令然后安装程序。-v自然就是版本version的意思
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
这一句半懂不懂,,大概就是利用curl工具访问那个url,然后在ruby环境下载安装brew
brew install automake
brew install libtool
brew install protobuf
就是利用brew下载安装了。protobuf就是我们想要的,另外两个是依赖库
git clone https://github.com/alexeyxo/protobuf-objc.git
./build.sh
从github下载protobuf-objc这个工程,build脚本里面做的是编译
注意:编译工程过程中,有可能会出现错误。别慌!看编译错误的提示。一般错误只是因为环境变量和路径没有配置好,少了一些东西,例如少了编译protobuf这个工程的依赖库,按照提示添加路径即可
有了工程以后,我们就可以开始测试一下怎么用protobuf了
2.第二步
关于安装和使用cocoapod,属于另一个话题,看另一个博文
在Podfile添加下面这个句子
platform :ios , 6.0
pod "ProtocolBuffers", "~> 1.9.7"
在保存之后,到终端,cd到工程里面,
pod install
等一会,cocoapod就会帮我们添加好,以后我们就应该打开
project的workspace,因为添加了pod作为子工程。
3. 第三步
编译命令如下:
eg 1.
先打开工程,建议单独新建一个文件夹作为输出路径,例如工程下新建文件夹Gen,用来放generate出来的.pb.h文件&&.pb.m文件
打开终端
cd到工程路径下
protoc --plugin=/usr/local/bin/protoc-gen-objc person.proto --objc_out="./Gen"
大功告成!
注: 另外: 可以
eg 2.
/usr/local/bin 前往文件夹(.pro文件放到这里)
之后再终端cd /usr/local/bin 命令:protoc message.proto --objc_out=“." 回车生成.h .m文件
protoc ApiM/ApiM.proto ApiM/ApiMApplicationProcess.proto ApiM/ApiMZhang.proto --objc_out="."
以上是我的简述,不明白的可以及时问我。