美文网首页iOS
Google Protocol Buffers iOS使用举例(

Google Protocol Buffers iOS使用举例(

作者: 码农二哥 | 来源:发表于2020-03-03 11:12 被阅读0次

    简介

    Protobuffer是一个类似JSON的一个传输协议,其实也不能说是协议,可以认为是一种传输数据格式类似JSON,XML。但是比JSON更加轻量。消耗更小的带宽。
    跨语言,这是它的一个优点。它自带了一个编译器,protoc,只需要用它进行编译,可以编译成JAVA、python、C++、OC代码。

    安装

    安装方式有两种,我最开始选择了比较笨的一种,先介绍比较简单的一种

    简单


    1. 下载:参考链接:https://github.com/protocolbuffers/protobuf/releases
      image.png
    2. 编译:下载完成之后,进行解压,然后使用终端,进入到其解压文件下:
      依次在终端中执行
    # 前提是:使用brew按照工具链(xcode autoconf automake libtool)
    $ ./autogen.sh
    $ ./configure
    $ make
    $ make check
    $ sudo make install # 这一步也可以不做,用的时候直接使用路径找就好
    

    相对愚蠢的另一种


    1. 参考链接:https://github.com/protocolbuffers/protobuf按照官方文档操作

    2. 参考方法二其实比较简单


      image.png
    3. 我一个粗心,选择了方法一,参考链接:https://github.com/protocolbuffers/protobuf/blob/master/src/README.md
      准备阶段(使用brew按照工具链):

      image.png
    4. 下载代码编译:


      image.png

    使用


    1 创建.proto文件person.proto

    syntax = "proto3";
    
    message Person {
        int64 person_id = 1;
        string person_name = 2;
        string person_gender = 3;
        string person_message = 4;
    }
    
    

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

    protoc ./person.proto --objc_out=./
    

    3 在工程中使用

    • 新建一个工程,之后将Person.proto & Person.pbobjc.h & Person.pbobjc.m添加到工程
    • 使用pod引用Protobuf
    pod 'Protobuf';
    
    • 编译:可能会报错,主要是因为生成的Person.pbobjc.m文件为MRC下使用,而我们的工程环境为ARC,所以需要配置该文件支持ARC环境。
    • 如果有其他错误,继续解决即可(网上一搜一堆方案),可以看考:https://www.jianshu.com/p/c17260b36928
    • demo
    Person *person = [Person new];
    person.personId = 1;
    person.personName = @"Carson";
    person.personGender = @"Male";
    person.personMessage = @"I'm the best in the world !";
        
    NSData *personData = [person data];
    NSString *encodedBase64FromStr = [personData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
    
    • 或者从这儿找一个可以运行的demo运行一下看看


      image.png

    相关文章

      网友评论

        本文标题:Google Protocol Buffers iOS使用举例(

        本文链接:https://www.haomeiwen.com/subject/lyxqlhtx.html