#iOS#HeminWon学习资料iOS进阶之路

Protocol buffers在iOS中的使用(Objecti

2017-01-04  本文已影响1502人  CarsonChen

一. protocol buffers 简介

Protobuffer是一个类似JSON的一个传输协议,其实也不能说是协议,可以认为是一种传输数据格式类似JSON,XML。但是比JSON更加轻量。消耗更小的带宽。
跨语言,这是它的一个优点。它自带了一个编译器,protoc,只需要用它进行编译,可以编译成JAVA、python、C++代码,暂时只有这三个,其他就暂时不要想了,然后就可以直接使用,不需要再写任何其他代码。连解析的那些都已经自带有的。JSON当然也是跨语言的,但这个跨语言是建立在编写代码的基础上,iOS开发使用protobuf可以添加第三方库即可集成开发环境进行使用。
官方资料:
https://developers.google.com/protocol-buffers/docs/overview

二. 环境集成

protobuf buffers安装
下载环境地址:
https://github.com/google/protobuf/releases
选择好需要下载的安装包:(二选一)

选择下载环境包

下载完成之后,进行解压,然后使用终端,进入到其解压文件下:
依次在终端中执行:

查看protoc插件

三. 创建.proto文件

我们这里写一个Person.proto文件

创建一个Person的Message 生成Person.proto文件

四. 利用protoc的插件生成对应的.h与.m文件

使用终端进入Person.proto文件路径下。
终端输入命令:

五. 将对应的.h与.m文件添加到工程中

新建一个工程,之后将Person.proto & Person.pbobjc.h & Person.pbobjc.m添加到工程中。(注:此工程需要使用Protobuf第三方框架,可以使用Cocoapods进行导入)

添加到工程中

之后 Command+B 编译一下,会发现报错。

报错信息

原因是生成的Person.pbobjc.m文件为MRC下使用,而我们的工程环境为ARC,所以需要配置该文件支持ARC环境。

支持ARC环境

完成之后,继续Command+B编译运行一下。
仍然发现会有错误

错误信息

针对这三个错误,解决方式为:


错误1

直接注释掉这一行。

错误2

直接注释掉这一行

错误3

直接点击Enter键

最后Command+B 编译一下,可以看到,工程没有错误了。

六.对protobuf Buffer数据的序列化与反序列化

在ViewController.m中导入头文件

导入头文件

创建Person的实例化对象,并且给其属性赋值,序列化为data类型,可以用于网络传输,反序列化为Person的实例化对象,可以之前请求数据获取Data Model。

序列化与反序列化 控制台打印

七.总结

protobuf数据格式的使用,提高了程序员开发效率,由于数据的轻量,所占到了更少的带宽,提高程序的效率。只需要前期与后台定义好.proto文件,得到的data的数据,可以直接反序列化为data model,一定程度的提高了开发效率。

Demo地址
https://github.com/CarsonChen0312/ProtobufDemo-Objective-C.git

上一篇下一篇

猜你喜欢

热点阅读