iOS总结3 Protobuf使用

Protocol Buffers是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。(支持 Java、C++、Python 等多种语言,支持多个平台)

Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。

你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。(可自定义,扩展性、兼容性好)

 

 

1.下载protobuf:

https://github.com/protocolbuffers/protobuf

2.生成protoc编译器

1、用终端切换到 protobuf 文件夹;

2、执行./autogen.sh ;

 

报错: ./autogen.sh: line 37: autoreconf: command not found

解决:

 

(1)autoconf 安装

curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz

tar -xzf autoconf-2.69.tar.gz

cd autoconf-2.69

./configure && make && sudo make install

 

(2)automake 安装

curl -OL http://ftpmirror.gnu.org/automake/automake-1.14.tar.gz

tar -xzf automake-1.14.tar.gz

cd automake-1.14

./configure && make && sudo make install

 

(3)libtool 安装

curl -OL http://ftpmirror.gnu.org/libtool/libtool-2.4.2.tar.gz

tar -xzf libtool-2.4.2.tar.gz

cd libtool-2.4.2

./configure && make && sudo make install

注意:解决完需再执行一遍./autogen.sh

 

3../configure

4.make

5.make check

6.sudo make install

7.objectivec/DevTools/full_mac_build.sh

 

工程中使用protobuf:

一、创建proto文件指定数据格式,可以选择proto2和proto3格式,它们有些细微的区别,在生成代码的时候会提示的,具体情况查看文档LanguageGuide proto3。下面使用proto3格式,并且保存为Person.proto。

创建文件person.proto

      $  cd /Users/zhangzhe/Desktop

      $  touch person.proto

然后用Xcode直接打开,写入:

syntax = "proto3";

message Person{

    string name = 1;

    int32 age = 20;

    enum DeviceType{

        iOS = 0;

        Android = 1;

    }

}

 

二、使用protoc工具生成Objective-C代码。其中--proto_path=后跟需要处理的proto文件所在的文件夹,--objc_out=指明生成的是Objective-C代码以及目标文件存放路径,最后是需要处理的文件。(objc_out表示生成oc下的文件)

protoc --proto_path=XXX --objc_out=ZZZ XXX/Person.proto

protoc --proto_path=MySrc --objc_out=MyGen MySrc/person.proto

 

三、处理完成后,生成两个文件,分别是Person.pbobjc.h和Person.pbobjc.m。这两个文件是采用的手动引用计数,因此在加入项目后需要设置它们的编译参数。

在工程target->Build Phrases->Compile Sources->给Person.pbobjc.m设置-fno-objc-arc

 

四、使用cocoapods方式导入:

   使用 pod  'Protobuf’ ,推荐,但是有时候网络不好就... 

   或者静态库引入方式

     1.下载Protocol Buffers的源代码

     2.复制objectivec文件到工程里,Add files to 向项目加入ProtocolBuffers_iOS.xcodeproj子项目

     3.设置依赖和连接库。

        (1).工程target->General->Framework、Libiaries中添加libProtocolBuffers.a

        (2)Target Dependencies

        (3).工程target->Build Setting->Header Search Paths中添加  "$(SRCROOT)/protoBufTest/objectivec"

就可以使用了:

#import "Person.pbobjc.h"

    Person *p = [[Person alloc] init];

    p.name = @"";

    p.age = 32;

    NSData *data = [p data];

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值