iOS之ProtocolBuffer搭建

Posted 小敏的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS之ProtocolBuffer搭建相关的知识,希望对你有一定的参考价值。

一、环境安装:pb编译器的安装

     1、从https://github.com/google/protobuf/releases下载protocolBuffer对应版本编译器包,比如目前的对应的objc最新版本Protocol Buffers v3.2.0

  2、解压包,假设解压后,打开终端,进入文件夹protobuf-objectivec , 依次执行以下命令:

./configure
make
make check
sudo make install

如果编译顺利的话,便可以使用protoc命令了,以后便可以用这个命令将.proto文件转换为不同语言的源代码文件。

二、创建新项目,导入pb库,编写proto文件编译,使用过程

 1、从https://github.com/google/protobuf.git下载源码,解压,里面有支持不同语言的版本源码,

  我们只需要里面的支持objc的文件夹名为:objectivec,如图:

2、新建一个工程命名为Tan_ProtocolBuffer,创建一个文件夹,假设命名为:protocolbuf, 把第一步的pb源码复制到此文件夹中:

 

3、使用Xcode打开工程,点击左下角“+”, 引用protocolBuffer源文件到工程中

  (源文件里面有两个工程配置文件:ProtocolBuffers_ios.xcodeproj和ProtocolBuffers_OSX.xcodeproj,引用ProtocolBuffers_iOS.xcodeproj就好)

 

4、选中工程: targets —>  Build Phases  —>  Link Binary With Libraries, 引用源码静态库文件:libProtocolBuffers.a

5、在工程设置搜索静态库的头文件(pb文件在protocolbuf文件夹里面):

   targets —>  Build Setting  —>  Search Paths  —> Header Search Paths, 写入:$(PROJECT)/protocolbuf 

6、编写测试文件*.proto

新建一个文件Person.proto, 按照官方标准语法https://developers.google.com/protocol-buffers/ 编写通用代码,写好后在终端进入该Person.proto文件所在目录,使用protoc命令:protoc *.proto --objc_out=../Pro_out 进行编译。 把Person.proto文件编译成Person.pbobjc.h和Person.pbobjc.m, 生成的文件在Pro_out文件夹里面。如果Person.proto源文件有语法问题,编译时会报错;当编译时什么提示都没有,表示编译成功:将编译好的*.pbobjc.h和*.pbobjc.m拖入工程中,因为不支持arc, 所以需要在*.pbobjc.m设置-fno-objc-arc, 然后就可以使用了。

截图如下: 

syntax = "proto3";

message Person{
    string name = 1;
    int32 age = 2;
    
    enum DeviceType{
        IOS = 0;
        android = 1;
        WP = 2;
    }
    DeviceType deviceType = 3;
    
    message Result{
        string url = 1;
        string title = 2;
    }
    
    repeated Result results = 4;
    repeated Animal animals = 5;
}

message Animal{
    float weight = 1;
    double price = 2;
    string name = 3;
}

7、编写测试代码,使用Person类进行数据序列化和反序列:

示例demo下载地址:https://github.com/xiaotanit/Tan_ProtocolBuffer

 

 

以上是关于iOS之ProtocolBuffer搭建的主要内容,如果未能解决你的问题,请参考以下文章

WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码实现IRequestChannel(2016-03-15 12:35)

iOS ProtocolBuffer环境配置与使用

「Protocol Buffer」之PB在HTTP协议中的应用

iOS之UI--主流框架的搭建-- 仿制QQ的UI框架

iOS代码片段CodeSnippets

IOS开发-OC学习-常用功能代码片段整理