日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Protocol Buffer搭建及示例

發(fā)布時間:2025/6/17 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Protocol Buffer搭建及示例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?本文來源:http://www.tanhao.me/code/150911.html/

?

Protocol Buffer(簡稱Protobuf或PB)是由Google推出的一種數(shù)據(jù)交換格式,與傳統(tǒng)的XML和JSON不同的是,它是一種二進制格式,免去了文本格式轉換的各種困擾,并且轉換效率也是非常快,由于它的跨平臺、跨編程語言的特點,讓它越來越普及,尤其是網(wǎng)絡數(shù)據(jù)交換方面日趨成為一種主流.

PB目前托管在GitHub,鏈接地址:https://github.com/google/protobuf,源碼的主要功能可以分為兩部分:

  • PB基礎庫:完成對象->數(shù)據(jù)的序列化、數(shù)據(jù)->對象的反序列化這兩個轉換過程的支持;
  • PB編譯器:源碼生成器,將PB格式定義文件.proto(PB數(shù)據(jù)格式的一種定義文件)轉換為對象源碼(支持C++,JAVA,Python等格式).

截止目前PB的最新版本為3.0.0-beta-1(alpha-4),已經(jīng)加入了對Objective-C的支持(其它之前低版本中也已經(jīng)有OC擴展支持),以下的示例便以該版本為例.

###1.編譯源碼,生成PB編譯器###
編譯源碼主要的目的就是在本地生成PB的編譯器,下載好protobuf-objectivec-3.0.0-alpha-4.tar.gz文件,執(zhí)行以下的命令進行編譯:

1 2 3 4 5 6 tar -xzvf protobuf-objectivec-3.0.0-alpha-4.tar.gz cd protobuf-3.0.0-alpha-4 ./configure make make check sudo make install

如果編譯順利的話,便可以使用protoc命令了,以后便可以用這個命令將.proto文件轉換為不同語言的源代碼文件.

###2.為工程添加PB依賴庫###
需要在項目中使用ProtocolBuffer,需要將依賴庫添加到項目中來,剛才下載的源碼objectivec目錄中已經(jīng)包含一個可編譯libProtocolBuffers.a靜態(tài)庫的工程,直接引入工程即可,當然ProtocolBuffer項目也支持cocoapods的方式引入,在你的Podfile中添加:

1 2 platform :ios, '7.1' pod "Protobuf", "~> 3.0.0-alpha-4"

###3.使用PB編譯器編譯.proto文件###
為了驗證我們的ProtocolBuffer環(huán)境已經(jīng)搭建好了,以下就來小試牛刀,創(chuàng)建類似以下的test.proto文件:

1 2 3 4 5 6 message Person { required string name = 1; //姓名 required int32 sex = 2; //性別 required int32 age = 3; //年齡 }

然后通過以下的命令生成生成Model的源代碼文件:

1 protoc --objc_out=./ ./test.proto

在當前目錄便可以看到Test.pbobjc.h和Test.pbobjc.m這兩個文件了(需要注意的是生成的代碼是MRC的,如果引入ARC工程中記得添加-fno-objc-arc的標簽).

###4.在項目中使用PB完成序列化&反序列化###
將上個步驟中生成的源代碼添加到工程之中,你就可以直接使用他們了,使用起來非常的方便,示例如下:

1 2 3 4 5 6 7 8 9 10 11 12 // 創(chuàng)建對象 Person *person = [Person new]; person.name = @"TanHao"; person.sex = 1; person.age = 28; // 序列化為Data NSData *data = [person data]; // 反序列化為對象 Person *person2 = [Person parseFromData:data error:NULL]; NSLog(@"name:%@ sex:%d age:%d",person2.name,person2.sex,person2.age);

轉載于:https://www.cnblogs.com/tangranyang/p/6235604.html

總結

以上是生活随笔為你收集整理的Protocol Buffer搭建及示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。