簡介:
Protocol Buffer是google 的一種數(shù)據(jù)交換的格式忍啸,已經(jīng)在Github開源,目前最新版本是3.1.0。它獨立于語言融撞,獨立于平臺。google 提供了多種語言的實現(xiàn):Java粗蔚、C#尝偎、C++、Go和Python,Objective-C鹏控,每一種實現(xiàn)都包含了相應(yīng)語言的編譯器以及庫文件冬念。由于它是一種二進制的格式,比使用 XML 進行數(shù)據(jù)交換快許多牧挣〖鼻埃可以把它用于分布式應(yīng)用之間的數(shù)據(jù)通信或者異構(gòu)環(huán)境下的數(shù)據(jù)交換。作為一種效率和兼容性都很優(yōu)秀的二進制數(shù)據(jù)傳輸格式瀑构,可以用于諸如網(wǎng)絡(luò)傳輸裆针、配置文件刨摩、數(shù)據(jù)存儲等諸多領(lǐng)域。
官網(wǎng):
https://developers.google.com/protocol-buffers/
https://github.com/google/protobuf
個人安裝使用的過程:
1.首先在github上下載全部代碼世吨,下載完成解壓后放在指定的使用位置(我放在桌面了)
2.安裝依賴庫
brew install autoconf
brew install libtool
brew install automake
3.執(zhí)行命令 cd?/Users/zhangyu/Desktop/protobuf-master/objectivec/DevTools/澡刹,然后在執(zhí)行sudo shfull_mac_build.sh進行編譯,如果報錯耘婚,有可能是依賴沒有加上罢浇,按照報錯的原因加上就好(我這邊編譯的時候報:Timed out waiting 120 seconds for simulator to boot),我就強制關(guān)閉了沐祷,原因不知道嚷闭。。赖临。能力有限了
4.安裝完成后在/Users/zhangyu/Desktop/protobuf-master/src/ 目錄下生成 protoc 可執(zhí)行程序胞锰,以后會用到這個protoc可執(zhí)行程序把 .proto文件生成oc文件也就是.h.m文件。
5.創(chuàng)建一個.proto文件(參照別人寫的)Person.proto文件
創(chuàng)建文件:新建一個文件夾然后在終端cd打開(我的:cd /Users/zhangyu/Desktop/protoTest)然后在執(zhí)行 touch Person.proto
將以下內(nèi)容填寫
?syntax ="proto3”;
message Person?
{
stringname =1;
int32 age=2;
stringaddress =3;
}
需要注意的是要指明proto的語法規(guī)則是proto2還是proto3兢榨。
6.使用protoc可執(zhí)行程序?qū)?proto文件生成.h.m文件嗅榕。
首先進入到protoc這個可執(zhí)行程序的目錄 cd /Users/zhangyu/Desktop/protobuf-master/src
然后在執(zhí)行 ./protoc --proto_path=/Users/zhangyu/Desktop/protoTest --objc_out=/Users/zhangyu/Desktop/proto_objc /Users/zhangyu/Desktop/protoTest/Person.proto
講解上面三個目錄,第一個是創(chuàng)建.protoc文件的目錄吵聪,第二個是你想把生成的.h.m文件放到的目錄(我這里是在桌面上新建了一個proto_objc文件夾)凌那,第三個是.proto文件 ?。
執(zhí)行完上面的步驟吟逝,就會在你建的文件夾里面生成.h.m文件了案怯。
7.集成到項目中,新建一個項目澎办,將生成的Ojective-C文件(上面例子的Person.pbobjc.h和Person.pbobjc.m)放到項目中嘲碱,如果項目使用了ARC,要將.m(例子的Person.pbobjc.m)的Complier Flags設(shè)為-fno-objc-arc。(protobuf基于性能原因沒有使用ARC)
加入protobuf庫局蚀,有兩種方式
第一種是使用CocoaPods集成
使用CocoaPods集成麦锯,有一個現(xiàn)成的pod可以使用–Protobuf,可以pod search Protobuf搜索查看詳情,pod內(nèi)容為
pod'Protobuf'
第二種是把相關(guān)文件拖入項目中琅绅。
拖入相關(guān)文件到項目中扶欣,將objectivec文件夾下的所有的.h文件和.m文件(除了GPBProtocolBuffers.m)(GPB開頭的那些文件)以及整個google文件夾add到項目中,如果項目中使用了ARC需要將以上所有.m文件的的Complier Flags設(shè)為-fno-objc-arc千扶。這種方法的優(yōu)點是靈活性強料祠,沒有7.1的束縛。缺點是操作麻煩點澎羞,如果用了ARC的話還要手動添加-fno-objc-arc(使用CocoaPods集成會自動添加),記得添加User Header Search Paths為$(PROJECT_DIR)/項目名/后接文件地址 不然頭文件會報錯
簡單使用
直接上代碼
- (void)viewDidLoad {
[super viewDidLoad];
Person *person = [[Person alloc] init];
person.age = 100;
person.username = @"huang";
person.phone = @"10086";
NSData *data = [person data];
Person *p = [Person parseFromData:data error:nil];
NSLog(@"person:%@",p);
}
參考
原文地址:http://blog.csdn.NET/hyq4412/article/details/54891038